怎样获取存储过程的名称和它的输入输出参数。谁能给出查询语句。

解决方案 »

  1.   

    我需要一个查询语句返回如下:
                                 存储过程名称  参数描述()
                                   aaa          par1
                                   aaa          par2
                                   bbb          par3
                                   bbb          par4
                                       ........
      

  2.   

    同意一楼的desc your_proc
      

  3.   

    我要在程序中读取数据库中所有的存储过程的列表,包括存储过程名称和它的所有参数。我需要知道所有的sql语句,才能把这些信息查询出来就是这个意思。
      

  4.   

    ORACLE
    特殊
    Ø       ORACLE只能连接特定数据库,不能自动扫描数据库对象。Ø       ORACLE表必须用用户来区别,否则表可能重名。Ø       ORACLE不能区别系统表或者是用户表,因此只能由管理员选择扫描某些特定用户的表。取得数据库名的方法
    只能由用户指定数据库,不能自动扫描到特定数据库服务器上的所有数据库。取得表的方法
    存储数据库表的系统表视图主要有:DBA_ALL_TABLES描述数据库中所有的对象以及相关的表。ALL_ALL_TABLES描述数据库中所有的用户可以访问的对象以及相关的表。USER_ALL_TABLES描述数据库中当前用户拥有的对象以及相关的表。
    DBA_ TABLES描述数据库中所有相关的表。ALL_ TABLES描述数据库中所有的用户可以访问的相关的表。USER_ TABLES描述数据库中当前用户拥有的相关的表。
    因此,可以从ALL_TABLES中取得隶属于指定用户的表:SELECT TABLE_NAME FROM SYS.ALL_TABLES WHERE OWNER = 'DBAUDIT';取得隶属于指定表空间的表:SELECT TABLE_NAME FROM SYS.ALL_TABLES WHERE TABLESPACE_NAME = 'DBAUDIT';
    也可以不指定用户名,从而取得所有的表。SELECT TABLE_NAME FROM SYS.ALL_TABLES;取得列的方法
    存储数据库表的列属性的系统表视图主要有:DBA_TAB_COLUMNS
    描述数据库中所有的表的列属性。
    ALL_TAB_COLUMNS
    描述数据库中所有的用户可以访问的表的列属性。
    USER_TAB_COLUMNS
    描述数据库中当前用户拥有的表的列属性。
    ALL_TAB_COLS描述数据库中所有的用户可以访问的表的列属性。
    因此,可以从ALL_TAB_COLUMNS中取得隶属于指定用户的表:
    SELECT COLUMN_NAME FROM SYS.ALL_TAB_COLUMNS WHERE TABLE_NAME = 'TASK' AND OWNER = 'DBAUDIT';取得视图的方法
    存储数据库视图的系统表视图主要有:DBA_VIEWS
    描述数据库中所有的视图的属性。
    ALL_VIEWS
    描述数据库中所有的用户可以访问的视图的属性。
    USER_VIEWS描述数据库中所有的当前用户拥有视图的属性。
    因此,可以从ALL_VIEWS中取得隶属于指定用户的视图:
    SELECT VIEW_NAME FROM SYS.ALL_VIEWS WHERE OWNER = 'DBAUDIT';取得存储过程的方法
    存储系统对象的系统表视图有:DBA_OBJECTS描述数据库中所有的对象。ALL_OBJECTS
    描述数据库中所有的可以访问的对象。
    USER_OBJECTS描述数据库中所有的当前用户拥有的对象。SYS_OBJECTS描述数据库中所有的系统对象。?
    对象类型有:CONSUMER GROUPCONTEXTDIRECTORYFUNCTIONINDEXINDEX PARTITIONINDEXTYPEJAVA CLASSJAVA DATAJAVA RESOURCEJAVA SOURCELIBRARYLOBMATERIALIZED VIEWOPERATORPACKAGEPACKAGE BODYPROCEDUREQUEUESEQUENCESYNONYMTABLETABLE PARTITIONTRIGGERTYPETYPE BODYVIEW
    因此,取得存储过程可以用:SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'PROCEDURE';取得隶属于某个用户的存储过程可以用:SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'PROCEDURE' AND OWNER = ‘DBAUDIT';
    同样,取得其他的对象也可以用这个方法,包括表,视图等。取得存储过程内容的方法
    对象类型为类型、类型体、过程、函数、包、包体,JAVA源代码的所有对象的源代码都存储在几个系统表视图中:DBA_SOURCE存储所有数据库对象的源代码。ALL_SOURCE
    存储所有可以访问的数据库对象的源代码。
    USER_SOURCE存储所有当前用户拥有的数据库对象的源代码。
    因此,取得存储过程源代码的方法:SELECT TEXT FROM SYS.ALL_SOURCE WHERE NAME = ‘XXX' AND TYPE = ‘PROCEDURE';取得函数的方法
    同上,取得函数可以用:SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'FUNCTION';取得隶属于某个用户的函数可以用:SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'FUNCTION' AND OWNER = 'DBAUDIT';
    取得函数内容可以用:SELECT TEXT FROM SYS.ALL_SOURCE WHERE NAME = 'XXX' AND TYPE = 'FUNCTION';取得触发器的方法
    存储数据库触发器的系统表视图主要有:DBA_TRIGGERS
    描述数据库中所有的触发器的属性。
    ALL_ TRIGGERS
    描述数据库中所有的用户可以访问的触发器的属性。
    USER_ TRIGGERS描述数据库中所有的当前用户拥有触发器的属性。
    因此,可以从ALL_ TRIGGERS中取得隶属于指定用户的触发器:
    SELECT TRIGGER_NAME FROM SYS.ALL_TRIGGERS WHERE OWNER = 'DBAUDIT';
    取得触发器内容的方法:SELECT TRIGGER_BODY FROM SYS.ALL_TRIGGERS WHERE TRIGGER_NAME = 'XXX';取得索引的方法
    存储数据库索引的系统表视图主要有:DBA_INDEXES
    描述数据库中所有的索引的属性。
    ALL_ INDEXES
    描述数据库中所有的用户可以访问的索引的属性。
    USER_ INDEXES描述数据库中所有的当前用户拥有索引的属性。
    因此,可以从ALL_ INDEXES中取得隶属于指定用户的索引:
    SELECT INDEX_NAME,TABLE_NAME FROM SYS.ALL_INDEXES WHERE OWNER = 'DBAUDIT';
    取得索引相关的列的方法:SELECT COLUMN_NAME FROM SYS.ALL_IND_COLUMNS WHERE INDEX_NAME = 'XXX' AND TABLE_OWNER = 'DBAUDIT';用户
    存储数据库用户的系统表视图主要有:DBA_USERS
    描述数据库中所有的用户的属性。
    ALL_USERS
    描述数据库中所有的用户的属性。
    USER_USERS描述数据库中当前用户的属性。因此,可以从ALL_USERS中取得用户:
    SELECT USER_ID, USERNAME FROM SYS.ALL_USERS;角色
    存储角色的表视图有:DBA_ROLES描述数据库中所有角色。
    取得角色方法:SELECT ROLE FROM SYS.DBA_ROLES;表空间
    SELECT TABLESPACE_NAME FROM SYS.DBA_TABLESPACES;数据文件
    SELECT FILE_NAME, FILE_ID, TABLESPACE_NAME FROM SYS.DBA_DATA_FILES;数据库连接
    存储数据库连接的系统表视图主要有:DBA_LINKS
    描述数据库中所有的连接的属性。
    ALL_LINKS
    描述数据库中所有的用户可访问的连接的属性。
    USER_LINKS描述数据库中当前用户的连接属性。
    因此,可以从DBA_DB_LINKS中取得连接:
    SELECT  FROM SYS.DBA_DB_LINKS;
    同义词
    SELECT  FROM SYS.ALL_SYNONYMS WHERE TABLE_OWNER = 'DBAUDIT';程序包
    取得程序包可以用:SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'PACKAGE';取得隶属于某个用户的程序包可以用:SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'PACKAGE' AND OWNER = 'DBAUDIT';
    取得程序包内容可以用:SELECT TEXT FROM SYS.ALL_SOURCE WHERE NAME = 'XXX' AND TYPE = 'PACKAGE';程序包体
    取得程序包体可以用:SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'PACKAGE BODY';取得隶属于某个用户的程序包可以用:SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'PACKAGE BODY ' AND OWNER = 'DBAUDIT';
    取得程序包内容可以用:SELECT TEXT FROM SYS.ALL_SOURCE WHERE NAME = 'XXX' AND TYPE = 'PACKAGE BODY ';簇
    暂不扫描。高级队列
    暂不扫描。序列
    暂不扫描。数组类型
    暂不扫描。维
    暂不扫描。Java源
    暂不扫描。对象类型
    暂不扫描。刷新组
    暂不扫描。概要文件
    暂不扫描。