oracle獲取存儲(chǔ)過(guò)程信息(Oracle gets stored procedure information)_第1頁(yè)
oracle獲取存儲(chǔ)過(guò)程信息(Oracle gets stored procedure information)_第2頁(yè)
oracle獲取存儲(chǔ)過(guò)程信息(Oracle gets stored procedure information)_第3頁(yè)
oracle獲取存儲(chǔ)過(guò)程信息(Oracle gets stored procedure information)_第4頁(yè)
oracle獲取存儲(chǔ)過(guò)程信息(Oracle gets stored procedure information)_第5頁(yè)
已閱讀5頁(yè),還剩21頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、oracle獲取存儲(chǔ)過(guò)程信息(Oracle gets stored procedure information)選擇文本從user_source類型=“過(guò)程”按名稱、行順序;選擇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表;創(chuàng)建表t_tmperrorsp(名稱char(100),結(jié)果char(10);在表t_tmperrorobj評(píng)論是“無(wú)效對(duì)象表”;柱上t_評(píng)論是“對(duì)象名”;柱上t_tmperrorobj.result評(píng)論是“返回結(jié)果”;t_tmpvalidobj表;創(chuàng)建表t_tmpvali

3、dobj(名稱char(100),結(jié)果char(10);在表t_tmpvalidobj評(píng)論是“有效對(duì)象表”;柱上t_評(píng)論是“對(duì)象名”;柱上t_tmpvalidobj.result評(píng)論是“返回結(jié)果”;t_tmpcheckdata表;創(chuàng)建表t_tmpcheckdata(parentname char(100),childname char(100),parametername char(100),副模式字符(20),項(xiàng)目int,in_out char(4),參數(shù)數(shù)據(jù)VARCHAR2(200),pk_tmpcheckdata主鍵約束(parentname,childn

4、ame,項(xiàng));在表t_tmpobjparameter評(píng)論是“對(duì)象檢查列表”;柱上parentname評(píng)論是“父對(duì)象名”;柱上childname評(píng)論是“子對(duì)象名”;柱上parametername評(píng)論是“參數(shù)名”;在柱副模式的評(píng)論是“參數(shù)數(shù)據(jù)類型”;在物品欄的評(píng)論是“參數(shù)順序”;柱上in_out評(píng)論是“參數(shù)輸入輸出類型”;在柱參數(shù)數(shù)據(jù)的評(píng)論是“參數(shù)值”;t_tmpobjparameter表;創(chuàng)建表t_tmpobjparameter(parentname char(100),childname char(100),parametername char(100),副模式字符(20),paralengt

5、h int,項(xiàng)目int,in_out char(4),pk_tmpobjparameter主鍵約束(parentname,childname,項(xiàng));在表t_tmpobjparameter評(píng)論是“對(duì)象參數(shù)表”;柱上parentname評(píng)論是“父對(duì)象名”;柱上childname評(píng)論是“子對(duì)象名”;柱上parametername評(píng)論是“參數(shù)名”;在柱副模式的評(píng)論是“參數(shù)數(shù)據(jù)類型”;柱上paralength評(píng)論是“參數(shù)數(shù)據(jù)長(zhǎng)度”;在物品欄的評(píng)論是“參數(shù)順序”;柱上in_out評(píng)論是“參數(shù)輸入輸出類型”;t_tmpobjresult表;創(chuàng)建表t_tmpobjresult(parentname char(

6、100),childname char(100),parametername char(100),結(jié)果VARCHAR2(200),項(xiàng)目int,isindentical char(4),pk_tmpobjresult主鍵約束(parentname,childname,項(xiàng));在表t_tmpobjparameter評(píng)論是“對(duì)象運(yùn)行結(jié)果表”;柱上parentname評(píng)論是“父對(duì)象名”;柱上childname評(píng)論是“子對(duì)象名”;柱上parametername評(píng)論是“參數(shù)名”;柱上的結(jié)果的評(píng)論是“返回值”;在物品欄的評(píng)論是“參數(shù)順序”;柱上isindentical評(píng)論是“結(jié)果是否一致”;創(chuàng)建包pkg_te

7、stingobject是程序up_getvalidobject(o_retcounter了into_retcursor出sys_refcursor獲得有效的對(duì)象);程序up_loadxmlfile(o_filestr在空,o_retcode了int,o_retcursor出sys_refcursor導(dǎo)入對(duì)象檢查列表);程序up_check(在sys_refcursor o_objcursor,在sys_refcursor o_checkcursor,o_retcode了int,o_retcursor出sys_refcursor);將參數(shù)賦值給對(duì)象,并運(yùn)行它程序up_compare(在sys_r

8、efcursor o_chkcursor,在sys_refcursor o_xmlcursor,o_retcode了int比較對(duì)象運(yùn)行結(jié)果與檢查列表是否一致)。程序up_testing(o_filestr在VARCHAR2(400),o_retcode了int);最后pkg_testingobject;創(chuàng)建包體pkg_testingobject作為程序up_getvalidobject(o_retcounter了into_retcursor出sys_refcursor)是開(kāi)始o(jì)_retcounter:= 0;打開(kāi)o_retcursor為選擇object_name,從user_objects哪里

9、object_type狀態(tài)(package身體)以object_name;CS在o_retcursor環(huán)TRUNCATETABLE t_tmperrorobj;TRUNCATETABLE t_tmpvalidobj;如果cs.object_name 的pkg_testingobject然后如果cs.status “有效的”然后插入t_tmpvalidobj(名稱、結(jié)果)值(CS。object_name,CS。狀態(tài));其他的插入t_tmperrorobj(名稱、結(jié)果)值(CS。object_name,CS。狀態(tài));o_retcounter:= o_retcounter + 1;最后如果最后如果結(jié)

10、束循環(huán)如果o_retcounter 0插入t_tmpobjparameter(parentname,childname,parametername,副模式,項(xiàng)目,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打開(kāi)o_retcursor為SELECT * FROM t_tmpobjparameter;最后如果返回;最后up_get

11、validobject;程序up_loadxmlfile(o_filestr在空,o_retcode了int,o_retcursor出sys_refcursor)是解析器解析器XMLParser;醫(yī)生xmldom.domdocument;結(jié)xmldom.domnode;xmldom.domnodelist列表;nodelength int;根據(jù)包結(jié)點(diǎn)生成插入SQL語(yǔ)句的過(guò)程通過(guò)畫(huà)圖省識(shí)春風(fēng)面功能getsqlstring(節(jié)點(diǎn)的文檔。DOMNode)返回空是l_node xmldom.domnode;l_nodelist xmldom.domnodelist;l_length數(shù);l_nodema

12、p xmldom.domnamednodemap;l_element xmldom.domelement;l_sqlstr VARCHAR2(400);開(kāi)始取得包結(jié)點(diǎn)所有屬性l_nodemap:= XMLDOM getattributes(節(jié)點(diǎn));l_sqlstr:=“插入t_tmpcheckdata值(;l_sqlstr:= l_sqlstr | | ;取得所有屬性中的第一個(gè)屬性,即“名”,并拼接到SQL語(yǔ)句中l(wèi)_sqlstr:= l_sqlstr | | XMLDOM。getnodevalue(XMLDOM。項(xiàng)目(l_nodemap,0);l_sqlstr:= l_sqlstr | | ;

13、取得包結(jié)點(diǎn)下的程序結(jié)點(diǎn),跳過(guò)。l_nodelist:= XMLDOM getchildnodes(l_node);取得程序節(jié)點(diǎn)下的所有程序節(jié)點(diǎn)l_node:= XMLDOM項(xiàng)目(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。項(xiàng)目(l_nodemap

14、,0);l_sqlstr:= l_sqlstr | | ;取得程序結(jié)點(diǎn)下的參數(shù)結(jié)點(diǎn),跳過(guò)。l_nodelist:= XMLDOM getchildnodes(l_node);取得參數(shù)節(jié)點(diǎn)下的所有參數(shù)節(jié)點(diǎn)l_node:= XMLDOM項(xiàng)目(l_nodelist,0);l_nodelist:= XMLDOM getchildnodes(l_node);l_length:= XMLDOM。長(zhǎng)度(l_nodelist);我在0 l_length-1環(huán).我個(gè)結(jié)點(diǎn)-取出第l_node:= XMLDOM。項(xiàng)目(l_nodelist,我);l_element:= XMLDOM makeelement(l_no

15、de);l_sqlstr:= l_sqlstr | | ,;l_sqlstr:= l_sqlstr | | ;將結(jié)點(diǎn)的名字屬性值取出并拼接到SQL語(yǔ)句中l(wèi)_sqlstr:= l_sqlstr | | XMLDOM對(duì)象(l_element,name);l_sqlstr:= l_sqlstr | | ;l_sqlstr:= l_sqlstr | | ,;l_sqlstr:= l_sqlstr | | ;將結(jié)點(diǎn)的型屬性值取出并拼接到SQL語(yǔ)句中l(wèi)_sqlstr:= l_sqlstr | | XMLDOM對(duì)象(l_element,類型”);l_sqlstr:= l_sqlstr | | ;l_sqls

16、tr:= l_sqlstr | | ,;l_sqlstr:= l_sqlstr | | ;將結(jié)點(diǎn)的項(xiàng)目屬性值取出并拼接到SQL語(yǔ)句中l(wèi)_sqlstr:= l_sqlstr | | XMLDOM對(duì)象(l_element,Item);l_sqlstr:= l_sqlstr | | ;l _ sqlstr: = l _ sqlstr | | ,;l _ sqlstr: = l _ sqlstr | | ;- - - - - - - - 將結(jié)點(diǎn)的in _ out屬性值取出并拼接到sql語(yǔ)句中l(wèi) _ sqlstr: = l _ sqlstr | | xmldom.getattribute (l _ el

17、ements, in _ out);l _ sqlstr: = l _ sqlstr | | ;l _ sqlstr: = l _ sqlstr | | ,;l _ sqlstr: = l _ sqlstr | | ;- - - - - - - - 將結(jié)點(diǎn)的文本值取出并拼接到sql語(yǔ)句中l(wèi) _ 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);- - - - - - - - 轉(zhuǎn)換xml文件成dom對(duì)像doc: = xmlparser.getdocument (parser);xmlparser.freeparser (parser);- - - - - - - - 取出所有package元素nodelist: = xmldom.getelementsbytagname (doc, package);nodelength: =

19、xmldom.getlength (nodelist);- - - - - - - - 清空t _ tmpcheckdata表的內(nèi)容truncate from t _ tmpcheckdata;for i in 0.nodelength - 1 loop- - - - - - - - 取出第i個(gè)package元素node: = xmldom.item (nodelist, (i);- - - - - - - - 執(zhí)行插入該package元素所用的sql語(yǔ)句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畫(huà) 圖省識(shí)春風(fēng)面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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論