首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在DBA_PROCEDURES视图中找不到过程

在DBA_PROCEDURES视图中找不到过程
EN

Stack Overflow用户
提问于 2015-02-05 20:27:15
回答 2查看 1.4K关注 0票数 1

我创建了一个过程:

代码语言:javascript
复制
create or replace procedure gg as
begin
insert into book values ('prashant','prashant','prashant');
commit;
end;
/

过程已创建successfully.Now我想检查相应过程的包名,但我无法这样做。

我使用下面的查询:

代码语言:javascript
复制
 > SELECT *
        FROM SYS.DBA_PROCEDURES
        WHERE procedure_name ='gg';

它提供了0行selected.Please帮助。

EN

回答 2

Stack Overflow用户

发布于 2015-02-05 21:09:53

备注请查看更新部分以获取正确答案。

在DBA_PROCEDURES视图中,过程名称不能为小写。使用大写,或应用upper函数。

代码语言:javascript
复制
SELECT *
  FROM SYS.DBA_PROCEDURES
 WHERE procedure_name ='GG';

更新

唯一可以使用小写的名称的情况是,在编译时用双引号将其括起来。

例如,

代码语言:javascript
复制
SQL> CREATE OR REPLACE
  2  PROCEDURE "p"
  3  AS
  4  BEGIN
  5    NULL;
  6  END;
  7  /

Procedure created.

SQL> SELECT object_name, procedure_name, object_type FROM user_procedures where procedure_name='p';

no rows selected

SQL>

但是上面的视图仍然不会返回PROCEDURE_NAME.的任何结果

Reason

PROCEDURE_NAME列将只包含属于一部分的过程的过程名称。对于独立过程,您需要使用OBJECT_NAME.

代码语言:javascript
复制
SQL> -- stand alone procedure in lower case
SQL> CREATE OR REPLACE
  2  PROCEDURE "p"
  3  AS
  4  BEGIN
  5    NULL;
  6  END;
  7  /

Procedure created.

SQL>
SQL>  -- package
SQL> CREATE OR REPLACE
  2  PACKAGE test_p
  3  IS
  4    PROCEDURE p;
  5  END test_p;
  6  /

Package created.

SQL>
SQL> -- package body with a procedure
SQL> CREATE OR REPLACE
  2  PACKAGE BODY test_p
  3  IS
  4  PROCEDURE p
  5  IS
  6  BEGIN
  7    NULL;
  8  END;
  9  END test_p;
 10  /

Package body created.

SQL>
SQL> SELECT object_name, procedure_name, object_type FROM user_procedures;

OBJECT_NAME     PROCEDURE_NAME  OBJECT_TYPE
--------------- --------------- ---------------
TEST_P          P               PACKAGE
p                               PROCEDURE
TEST_P                          PACKAGE

SQL>

因此,正如您所看到的,procedure_name仅具有package's procedure,而stand-alone procedure仅在object_name下列出。

票数 1
EN

Stack Overflow用户

发布于 2017-07-21 12:33:27

我使用的查询是:

代码语言:javascript
复制
SELECT * FROM User_Procedures WHERE NVL(Procedure_Name,Object_Name) = 'PROCNAME';
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28343972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档