如何检查存储过程是否存在?

| 我已经在网上搜索过,并且找到了一个使用以下代码片段检查存储过程是否存在的帖子:
select * 
  from USER_SOURCE 
 where type=\'PROCEDURE\' 
   and name=\'my_stored_procedure.\' 
还有其他方法可以检查过程是否存在吗? 编辑添加: 在发布SQL Server方式之前,请先寻找ORACLE方式。     
已邀请:
备择方案: 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\'
    
对我有用的东西!
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\'
    
在SQL * PLUS,ODBC测试,...中执行以下查询 从all_source WHERE name = \'MY_PROCEDURE \'ORDER BY行中选择文本 其中MY_PROCEDURE是存储过程的名称。 以下是示例输出: 全部获取数据: \“文本\” \“程序Usp_Get_Blob \“( \“ P_DOC_ID INT, \“ P_DOC_TEXT OUT BLOB) \“如 \“开始 \“选择B1   进入p_doc_text \“来自blobtest \“,其中ID = p_doc_id; \“结束; \”     
查看数据库中是否存在过程的唯一方法是查询“ 6”。这里的缺点是只有dba可以访问此视图。第二好的是使用all_objects。
ALL_OBJECTS
向您显示您以某种方式享有特权的对象。
USER_OBJECTS
仅显示您自己的对象。     
选择 *   来自USER_SOURCE  其中type = \'PROCEDURE \'    和名称= \'my_stored_procedure。\'     

要回复问题请先登录注册