oracle获取存储过程信息(Oracle gets stored procedure information)_第1页
oracle获取存储过程信息(Oracle gets stored procedure information)_第2页
oracle获取存储过程信息(Oracle gets stored procedure information)_第3页
oracle获取存储过程信息(Oracle gets stored procedure information)_第4页
oracle获取存储过程信息(Oracle gets stored procedure information)_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、oracle获取存储过程信息(Oracle gets stored procedure information)选择文本从user_source类型=“过程”按名称、行顺序;选择package_name从user_arguments秩序*SELECT * FROM user_proceduresSELECT * FROM user_source name = up_compclearresult4settlefile”SELECT * FROM user_objects object_type在哪里(package身体)以object_name;选择dbms_metadata。get_ddl(

2、 #表#,#表名 #,#用户名#)从双;选择dbms_metadata。get_ddl(,u.table_name)从user_tables U;选择dbms_metadata。get_ddl(index ,u.index_name)从user_indexes U;t_tmperrorsp表;创建表t_tmperrorsp(名称char(100),结果char(10);在表t_tmperrorobj评论是“无效对象表”;柱上t_评论是“对象名”;柱上t_tmperrorobj.result评论是“返回结果”;t_tmpvalidobj表;创建表t_tmpvali

3、dobj(名称char(100),结果char(10);在表t_tmpvalidobj评论是“有效对象表”;柱上t_评论是“对象名”;柱上t_tmpvalidobj.result评论是“返回结果”;t_tmpcheckdata表;创建表t_tmpcheckdata(parentname char(100),childname char(100),parametername char(100),副模式字符(20),项目int,in_out char(4),参数数据VARCHAR2(200),pk_tmpcheckdata主键约束(parentname,childn

4、ame,项);在表t_tmpobjparameter评论是“对象检查列表”;柱上parentname评论是“父对象名”;柱上childname评论是“子对象名”;柱上parametername评论是“参数名”;在柱副模式的评论是“参数数据类型”;在物品栏的评论是“参数顺序”;柱上in_out评论是“参数输入输出类型”;在柱参数数据的评论是“参数值”;t_tmpobjparameter表;创建表t_tmpobjparameter(parentname char(100),childname char(100),parametername char(100),副模式字符(20),paralengt

5、h int,项目int,in_out char(4),pk_tmpobjparameter主键约束(parentname,childname,项);在表t_tmpobjparameter评论是“对象参数表”;柱上parentname评论是“父对象名”;柱上childname评论是“子对象名”;柱上parametername评论是“参数名”;在柱副模式的评论是“参数数据类型”;柱上paralength评论是“参数数据长度”;在物品栏的评论是“参数顺序”;柱上in_out评论是“参数输入输出类型”;t_tmpobjresult表;创建表t_tmpobjresult(parentname char(

6、100),childname char(100),parametername char(100),结果VARCHAR2(200),项目int,isindentical char(4),pk_tmpobjresult主键约束(parentname,childname,项);在表t_tmpobjparameter评论是“对象运行结果表”;柱上parentname评论是“父对象名”;柱上childname评论是“子对象名”;柱上parametername评论是“参数名”;柱上的结果的评论是“返回值”;在物品栏的评论是“参数顺序”;柱上isindentical评论是“结果是否一致”;创建包pkg_te

7、stingobject是程序up_getvalidobject(o_retcounter了into_retcursor出sys_refcursor获得有效的对象);程序up_loadxmlfile(o_filestr在空,o_retcode了int,o_retcursor出sys_refcursor导入对象检查列表);程序up_check(在sys_refcursor o_objcursor,在sys_refcursor o_checkcursor,o_retcode了int,o_retcursor出sys_refcursor);将参数赋值给对象,并运行它程序up_compare(在sys_r

8、efcursor o_chkcursor,在sys_refcursor o_xmlcursor,o_retcode了int比较对象运行结果与检查列表是否一致)。程序up_testing(o_filestr在VARCHAR2(400),o_retcode了int);最后pkg_testingobject;创建包体pkg_testingobject作为程序up_getvalidobject(o_retcounter了into_retcursor出sys_refcursor)是开始o_retcounter:= 0;打开o_retcursor为选择object_name,从user_objects哪里

9、object_type状态(package身体)以object_name;CS在o_retcursor环TRUNCATETABLE t_tmperrorobj;TRUNCATETABLE t_tmpvalidobj;如果cs.object_name 的pkg_testingobject然后如果cs.status “有效的”然后插入t_tmpvalidobj(名称、结果)值(CS。object_name,CS。状态);其他的插入t_tmperrorobj(名称、结果)值(CS。object_name,CS。状态);o_retcounter:= o_retcounter + 1;最后如果最后如果结

10、束循环如果o_retcounter 0插入t_tmpobjparameter(parentname,childname,parametername,副模式,项目,in_out,)选择object_name,package_name,argument_name,data_type,位置,从user_arguments哪里package_name在in_out(选择的名字从t_tmpvalidobj)以package_name,object_name,位置;e_mail:m_y打开o_retcursor为SELECT * FROM t_tmpobjparameter;最后如果返回;最后up_get

11、validobject;程序up_loadxmlfile(o_filestr在空,o_retcode了int,o_retcursor出sys_refcursor)是解析器解析器XMLParser;医生xmldom.domdocument;结xmldom.domnode;xmldom.domnodelist列表;nodelength int;根据包结点生成插入SQL语句的过程通过画图省识春风面功能getsqlstring(节点的文档。DOMNode)返回空是l_node xmldom.domnode;l_nodelist xmldom.domnodelist;l_length数;l_nodema

12、p xmldom.domnamednodemap;l_element xmldom.domelement;l_sqlstr VARCHAR2(400);开始取得包结点所有属性l_nodemap:= XMLDOM getattributes(节点);l_sqlstr:=“插入t_tmpcheckdata值(;l_sqlstr:= l_sqlstr | | ;取得所有属性中的第一个属性,即“名”,并拼接到SQL语句中l_sqlstr:= l_sqlstr | | XMLDOM。getnodevalue(XMLDOM。项目(l_nodemap,0);l_sqlstr:= l_sqlstr | | ;

13、取得包结点下的程序结点,跳过。l_nodelist:= XMLDOM getchildnodes(l_node);取得程序节点下的所有程序节点l_node:= XMLDOM项目(l_nodelist,0);l_nodelist:= XMLDOM getchildnodes(l_node);l_sqlstr:= l_sqlstr | | ,;l_sqlstr:= l_sqlstr | | ;l_nodemap:= XMLDOM getattributes(l_node);l_sqlstr:= l_sqlstr | | XMLDOM。getnodevalue(XMLDOM。项目(l_nodemap

14、,0);l_sqlstr:= l_sqlstr | | ;取得程序结点下的参数结点,跳过。l_nodelist:= XMLDOM getchildnodes(l_node);取得参数节点下的所有参数节点l_node:= XMLDOM项目(l_nodelist,0);l_nodelist:= XMLDOM getchildnodes(l_node);l_length:= XMLDOM。长度(l_nodelist);我在0 l_length-1环.我个结点-取出第l_node:= XMLDOM。项目(l_nodelist,我);l_element:= XMLDOM makeelement(l_no

15、de);l_sqlstr:= l_sqlstr | | ,;l_sqlstr:= l_sqlstr | | ;将结点的名字属性值取出并拼接到SQL语句中l_sqlstr:= l_sqlstr | | XMLDOM对象(l_element,name);l_sqlstr:= l_sqlstr | | ;l_sqlstr:= l_sqlstr | | ,;l_sqlstr:= l_sqlstr | | ;将结点的型属性值取出并拼接到SQL语句中l_sqlstr:= l_sqlstr | | XMLDOM对象(l_element,类型”);l_sqlstr:= l_sqlstr | | ;l_sqls

16、tr:= l_sqlstr | | ,;l_sqlstr:= l_sqlstr | | ;将结点的项目属性值取出并拼接到SQL语句中l_sqlstr:= l_sqlstr | | XMLDOM对象(l_element,Item);l_sqlstr:= l_sqlstr | | ;l _ sqlstr: = l _ sqlstr | | ,;l _ sqlstr: = l _ sqlstr | | ;- - - - - - - - 将结点的in _ out属性值取出并拼接到sql语句中l _ sqlstr: = l _ sqlstr | | xmldom.getattribute (l _ el

17、ements, in _ out);l _ sqlstr: = l _ sqlstr | | ;l _ sqlstr: = l _ sqlstr | | ,;l _ sqlstr: = l _ sqlstr | | ;- - - - - - - - 将结点的文本值取出并拼接到sql语句中l _ sqlstr: = l _ sqlstr | | xmldom.getnodevalue (xmldom.getfirstchild (l _ node);l _ sqlstr: = l _ sqlstr | | ;end loop;l _ sqlstr: = l _ sqlstr | | );retu

18、rn l _ sqlstr;end getsqlstring;beginparser: = xmlparser.newparser;xmlparser.parse (parser, no _ filestr);- - - - - - - - 转换xml文件成dom对像doc: = xmlparser.getdocument (parser);xmlparser.freeparser (parser);- - - - - - - - 取出所有package元素nodelist: = xmldom.getelementsbytagname (doc, package);nodelength: =

19、xmldom.getlength (nodelist);- - - - - - - - 清空t _ tmpcheckdata表的内容truncate from t _ tmpcheckdata;for i in 0.nodelength - 1 loop- - - - - - - - 取出第i个package元素node: = xmldom.item (nodelist, (i);- - - - - - - - 执行插入该package元素所用的sql语句execute immediate getsqlstring (node);end loop;commit;xmldom.freedocum

20、ent (doc);open no _ retcursor for select * from t _ tmpcheckdata by order of parentname;end up _ loadxmlfile;procedure up _ check (no _ objcursor in sys _ refcursor,no _ checkcursor in sys _ refcursor,no _ retcode out intno _ retcursor out _ refcursor sys)ol _ declare varchar2 (1024);l _ sqlstr varc

21、har2 (1024);l _ variablestr varchar2 (1024);l _ columnstr varchar2 (1024);l _ insertstr varchar2 (1024);l _ endstr char (4): = end;l _ counter int;l _ used int;l _ parentname char (100);l _ childname char (100);l _ item int;beginl _ declare: = ;l _ sqlstr: = ;l _ variablestr: = ;l _ columnstr: = ;l

22、_ insertstr: = ;l _ counter: = 0;l _ used: = 0;l _ parentname: = ;l _ childname: = ;l _ item: = 0;for os in no _ objcursor loopif l _ used = 0 thenl _ parentname: = os.parentname;l _ childname: = os.childname;l _ item: = os.item;elseif l _ parentname os.parentname or l _ childname os.childname thene

23、xecute immediate l _ declare | | l _ sqlstr | | l _ variablestr | | l _ columnstr | | l _ insertstr | | l _ endstr;l _ declare: = ;l _ sqlstr: = ;l _ variablestr: = ;l _ columnstr: = ;l _ insertstr: = ;l _ counter: = 0;l _ used: = 0;l _ parentname: = ;L _ childname: = ;L _ item: = 0;ElseIf l _ count

24、er = 0 thenL _ declares: = declare V _ sqlstr VARCHAR2 (1024);L _ sqlstr: = begin;End ifSelect parentname into L _ parentname, childname into L _ childname from t _ tmpcheckdata where parentname = l _ parentname and childname = l _ childname & item = os.itemIf os.item = 0 thenL _ sqlstr: = l _ sqlst

25、r | | V _ sqlstr: = begin | | L _ parentname | | . | | L _ childname | | () ; end; | | execute immediate V _ sqlstr; ; - - by画 图省识春风面Execute immediate L _ declares | | L _ sqlstr | | L _ variablestr | | L _ columnstr | | L _ insertstr;L _ sqlstr: = ;L _ counter: = 0;L _ used: = 0;ElseL _ declares: =

26、 l _ declares | | os.parametername os.paratype;If os.item = 1 thenL _ sqlstr: = l _ sqlstr | | : | | os.item;ElseL _ sqlstr: = l _ sqlstr | | , | | os.item;End ifL _ counter: = l _ counter + 1);If os.in _ out = in thenIf cs.item = 1 thenL _ parastr: = l _ parastr | | os.in _ out | | cs.parameterdata

27、;ElseL _ parastr: = l _ parastr | | , | | os.in _ out | | cs.parameterdata;End ifElseIf cs.item = 1 thenL _ parastr: = l _ parastr | | os.in _ out | | cs.parametername;ElseL _ parastr: = l _ parastr | | , | | os.in _ out | | cs.parametername;End ifEnd ifEnd ifL _ used: = 1;If l _ used = 1 thenL _ sqlstr: = l _ sqlstr | |) using ;L _ parastr: = l _ parastr | | ;Execut

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论