通过写一个函数来解决...
SELECT MAX(LINE) INTO N FROM ALL_SOURCE WHERE OWNER='TEMP' AND NAME='P1';//取出某存储过程的行数
WHILE I<=N LOOP//循环检查
SELECT TEXT INTO STOR_TEXT FROM ALL_SOURCE WHERE OWNER='TEMP' AND NAME='P1' AND LINE= I;
if instr(stor_text,upper('p2')) >0 then//存在关系
......
END LOOP;
...
SELECT MAX(LINE) INTO N FROM ALL_SOURCE WHERE OWNER='TEMP' AND NAME='P1';//取出某存储过程的行数
WHILE I<=N LOOP//循环检查
SELECT TEXT INTO STOR_TEXT FROM ALL_SOURCE WHERE OWNER='TEMP' AND NAME='P1' AND LINE= I;
if instr(stor_text,upper('p2')) >0 then//存在关系
......
END LOOP;
...
其實,這樣做得意義很顯然,就是在oracle中我們修改某些存儲過程或試圖時,可能導致某些store procedure編成invalid,如果實現了該方法,就可以寫個程序,一次按相關性,將invalid得store procedure(按相關聯、依賴得順序)全部重新編譯一次,省掉了很多維護得工作得。