保存在数据库中
通过 v$dba_source可以查看
例如:select * from dba_source t WHERE t.owner = 'SCOTT';

解决方案 »

  1.   

    补充说明一下:所有命名的包,函数,过程等都存储在数据库字典中。
    以下是视图dba_source的source,主要的信息都集中在sys.obj$ o, sys.source$ s, sys.user$ u
    三个表中:
    create or replace view dba_source
    (owner, name, type, line, text)
    as
    select u.name, o.name,
    decode(o.type#, 7, 'PROCEDURE', 8, 'FUNCTION', 9, 'PACKAGE',
                   11, 'PACKAGE BODY', 13, 'TYPE', 14, 'TYPE BODY',
                   'UNDEFINED'),
    s.line, s.source
    from sys.obj$ o, sys.source$ s, sys.user$ u
    where o.obj# = s.obj#
      and o.owner# = u.user#
      and o.type# in (7, 8, 9, 11, 13, 14)
    union
    select u.name, o.name, 'JAVA SOURCE', s.joxftlno, s.joxftsrc
    from sys.obj$ o, x$joxfs s, sys.user$ u
    where o.obj# = s.joxftobn  and o.owner# = u.user#
      and o.type# = 28
      

  2.   

    使用举例: 
       select * from dba_data_files
      查询表空间的信息(当前用户必须拥有DBA角色)。
     
      select owner , object_name ,object_type from all_objects
      查询某一用户下的所有表、过程、函数等信息。
      
      

  3.   

    Oracle数据字典中,对象名称多数以"USER.","ALL.","DBA."为前缀
    "USER."视图中记录通常记录执行查询的帐户所拥有的对象的信息,
    "ALL."视图中记录包括"USER"记录和授权至PUBLIC或用户的对象的信息,
    "DBA."视图包含所有数据库对象,而不管其所有者。
      

  4.   

    ▲查看已经存在的“存储过程”、“存储函数”或“包”的内容
    ①.查看已经存在的“存储过程”、“存储函数”或“包”名称
    SQL> select distinct name from user_source where type in ('FUNCTION','PACKAGE','PROCEDURE');NAME
    ------------------------------
    FUC_GETFEE
    PKG_TEST
    PRC_TEST
    TRIMSQL>
    ②.查看“存储过程”、“存储函数”或“包”的内容
    SQL> set pagesize 5000;
    SQL> select line,' ',text from user_source where name=upper('fuc_getfee');      LINE ''    TEXT
    ---------- ----- --------------------------------------------------------------------------------
             1       FUNCTION fuc_getFee(str IN CHAR)
             2        RETURN INTEGER
             3       AS
             4        value VARCHAR2(128);
             5        fee INT:=-1;
             6        loopCount INT:=0;
             7        loopBegin INT:=1;
             8        loopEnd INT:=0;
             9       BEGIN
            10        loopEnd:=LENGTH(str);
            11               FOR loopCount IN 1..loopEnd LOOP
            12        IF substr(str,(loopCount+1),1)='='  THEN        13        loopBegin:=loopCount+1;        14        END IF;        15               END LOOP;
            16        IF loopBegin<>0 THEN
            17        value:=trim(substr(str,loopBegin+1,loopEND-loopBegin-1));        18        --fee:=trunc(TO_NUMBER(value));        19        fee:=to_number(value);        20        --DBMS_OUTPUT.PUT_LINE('*' || value || '*');        21        END IF;
            22       
            23        RETURN fee;
            24       END fuc_getFee;24 行 已选择