我已经搜查了网,我发现,使用下面的代码片段来检查存储过程存在post:如何检查存储过程是否存在?
select *
from USER_SOURCE
where type='PROCEDURE'
and name='my_stored_procedure.'
是否有任何其他的方法来检查,如果过程存在?
编辑补充:
之前发布的SQL Server的方式,请我在找ORACLE的方式。
我已经搜查了网,我发现,使用下面的代码片段来检查存储过程存在post:如何检查存储过程是否存在?
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'
唯一的方法,如果在数据库中存在一个过程,虽然查询DBA_OBJECTS
。这里的缺点是只有一个dba可以访问这个视图。其次,使用all_objects。 ALL_OBJECTS
向您显示您拥有某种特权的对象。 USER_OBJECTS
只显示你自己的对象。
select * from USER_SOURCE where type ='PROCEDURE' and name ='my_stored_procedure。'
这是什么?与问题一样吗? – Cilan 2013-12-26 18:10:46
在SQL执行下面的查询* PLUS,ODBC测试,...
选择文本FROM ALL_SOURCE其中name = 'my_procedure的' ORDER BY线
其中my_procedure的是存储过程的名称。
下面是输出示例:
获取数据全部: “TEXT” “程序Usp_Get_Blob
”(
“P_DOC_ID INT,
” P_DOC_TEXT OUT BLOB)
“为
” 开始
“select B1 into p_doc_text
”from blobtest
“where where ID = p_doc_id;
“end;”
对我有用的东西!
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'
正是我寻找......谢谢! – 2011-04-19 19:24:04
+1 ..其他视图要记住:'ALL_OBJECTS','DBA_OBJECTS'(如果你有那个特权)。 '_PROCEDURES'也一样。 – Guru 2011-04-19 19:50:13