Как проверить, существует ли хранимая процедура? - PullRequest
10 голосов
/ 19 апреля 2011

Я искал в сети и нашел сообщение , в котором используется следующий фрагмент для проверки существования хранимой процедуры:

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

Есть ли другой способ проверить, существует ли процедура?

Отредактировано, чтобы добавить:

Прежде чем публиковать способы SQL Server, пожалуйста, я ищу способы ORACLE.

Ответы [ 5 ]

34 голосов
/ 19 апреля 2011

Альтернативы:

USER_PROCEDURES:

SELECT *
  FROM USER_PROCEDURES
 WHERE object_name = 'MY_STORED_PROCEDURE'

USER_OBJECTS:

SELECT *
  FROM USER_OBJECTS
 WHERE object_type = 'PROCEDURE'
   AND object_name = 'MY_STORED_PROCEDURE'
5 голосов
/ 26 февраля 2015

Что-то, что сработало для меня!

SELECT text
FROM all_source
WHERE name = 'MY_SP_NAME'
ORDER BY line;

В качестве альтернативы вы можете попробовать вызвать SP следующим образом:

CALL MY_SP_NAME();

Вы можете получить ошибку, подобную этой, но это подтверждает, что у вас там определен SP:

OCI Statement Execution failure.ORA-06553: PLS-306: wrong number or types of arguments in call to 'MY_SP_NAME'
1 голос
/ 03 апреля 2014

Выполните запрос ниже в SQL * PLUS, ODBC Test, ...

ВЫБРАТЬ текст ИЗ all_source WHERE name = 'MY_PROCEDURE' ORDER BY line

где MY_PROCEDURE - имя хранимой процедуры.

Ниже приведен пример вывода:

Получить данные все: "ТЕКСТ" "ПРОЦЕДУРА Usp_Get_Blob
«(
"P_DOC_ID INT,
"P_DOC_TEXT OUT BLOB)
«А
«Начать
«выберите B1 в p_doc_text
"от blobtest
"где ID = p_doc_id;
«конец»

0 голосов
/ 26 декабря 2013

выберите * из USER_SOURCE, где type = 'PROCEDURE' и name = 'my_stored_procedure.'

0 голосов
/ 20 апреля 2011

Единственный способ проверить, существует ли процедура в базе данных, - это запросить DBA_OBJECTS. Недостатком здесь является то, что только DBA имеет доступ к этому представлению. Вторым лучшим является использование all_objects. ALL_OBJECTS показывает вам объекты, на которые у вас есть право. USER_OBJECTS показывает только ваши собственные объекты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...