12
votes

Comment vérifier si une procédure stockée existe?

J'ai cherché le net et j'ai trouvé un Post qui utilise l'extrait suivant pour vérifier si une procédure stockée existe:

select * 
  from USER_SOURCE 
 where type='PROCEDURE' 
   and name='my_stored_procedure.' 


0 commentaires

6 Réponses :


38
votes

Alternatives:

user_procedures: xxx

user_objects: xxx < / pré>


4 commentaires

Exactement ce que je cherchais ... merci!


+1 .. les autres vues à retenir: all_Objects , dba_objects (si vous avez ce privilège). Idem pour _procédés aussi.


Si vous avez une procédure non valide (en raison d'erreurs de compilation), la procédure non valide est la piste de code dans user_Objects et all_Objects mais non répertoriée dans user_procedures et < Code> All_procedures .


Et si la procédure stockée est à l'intérieur de l'emballage?



1
votes

Le seul moyen de voir si une procédure existe dans la base de données est bien que la section suivante dba_Objects . L'inconvénient ici est que seul un DBA a accès à cette vue. Deuxième meilleur utilise All_Objects. All_Objects Vous montre les objets pour lesquels vous avez un privilège. user_Objects ne vous montre que vos propres objets.


0 commentaires

0
votes

Sélectionnez * de user_source où type = 'procédure' et nom = 'my_stortored_procedure.'


1 commentaires

Qu'est-ce que c'est? La même chose que la question?



2
votes

Exécutez la requête ci-dessous dans SQL * Plus, Test ODBC, ...

Sélectionnez Texte de All_source où nom = 'my_procedure' commander par ligne

où my_procedure est le nom de la procédure stockée.

ci-dessous est l'exemple de sortie:

Obtenir des données tout: "TEXTE" "Procédure USP_GET_BLOB
"(
"P_doc_id int,
"P_doc_text Out Blob)
"Comme
"Commencer
"Sélectionnez B1 dans p_doc_text
"De Blobtest
"Où id = p_doc_id;
"fin;"


0 commentaires

7
votes

quelque chose qui a fonctionné pour moi!

OCI Statement Execution failure.ORA-06553: PLS-306: wrong number or types of arguments in call to 'MY_SP_NAME'


0 commentaires

1
votes

Je n'ai pas pu trouver une procédure stockée avec aucune des méthodes ci-dessus.

Raison: la procédure stockée était à l'intérieur du paquet. Oracle utilise des packages pour recueillir plusieurs procédures stockées dans un module.


0 commentaires