重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)
1、打開plsql客戶端,登錄oracle數(shù)據(jù)庫;
成都創(chuàng)新互聯(lián)基于十載網(wǎng)站建設(shè)行業(yè)經(jīng)驗,一直致力于為中小型企業(yè)提供信息化解決方案,成都創(chuàng)新互聯(lián)做到開放、開源,讓企業(yè)所有核心數(shù)據(jù)掌握到企業(yè)手里,打破行業(yè)亂象,讓企業(yè)被網(wǎng)絡(luò)公司掌控的局面不再發(fā)生;美工設(shè)計部,產(chǎn)品/程序研發(fā)部,營銷策劃部,售后客服部。一切服務(wù)為企業(yè)量身定制,專注為您!
2、創(chuàng)建一個測試表,create table test_exists(id number, value varchar2(20));
3、編寫sql,插入oracle系統(tǒng)視圖,查詢剛建的表是否存在,
select * from user_tables t where table_name= upper('test_exists');可以看到有查詢結(jié)果,也就是說存在該表;
4、相反的,編寫sql,查詢test_exists2表是否存在,因沒有返回結(jié)果,則說明該表并不存在;select * from user_tables t where table_name= upper('test_exists2');
PL/SQL中為我們提供了調(diào)試存儲過程的功能,可以幫助你完成存儲過程的預(yù)編譯與測試。 點擊要調(diào)試的存儲過程,右鍵選擇TEST 如果需要查看變量,當(dāng)然調(diào)試都需要。在右鍵菜單中選擇Add debug information. start debugger(F9)開始我們的測試,Run(Ctrl+R) 隨時在varible List中輸入我們想查看的變量 其它: Step into(Ctrl+N):單步調(diào)試,進(jìn)入下一步 Step over(Ctrl+O):結(jié)束該語句 Step out(Ctrl+T):跳出該過程 Run to next exception:進(jìn)入下一個斷點Breakpoint Toggle Breakpoint設(shè)置斷點:光標(biāo)指向一行,Ctrl+B;或鼠標(biāo)點中該行的行號邊緣
1.查看是哪一個存儲過程被鎖住
查V$DB_OBJECT_CACHE視圖
select * from V$DB_OBJECT_CACHE where owner='過程的所屬用戶' AND LOCKS!='0'
2.查看是哪一個sid,通過sid可以知道是哪一個session
查v$access視圖
select * from v$access where owner='過程的所屬用戶' and name='剛才查到的過程名'
3.查出sid和serial#
查v$session視圖
select sid,serial#,paddr from v$session where sid='剛才查到的sid';
查v$process視圖
select spid from v$process where addr='剛才查到的paddr';
4.殺進(jìn)程
Oracle規(guī)定,在默認(rèn)的情況下,在調(diào)用存儲過程用戶的角色不起作用,即在執(zhí)行存儲過程時只有Public權(quán)限。所以在調(diào)用Create table時,會有權(quán)限不足的提示。
只需要使用IR Procedure就能很快解決問題啦,把代碼修改為如下:
CREATE OR REPLACE PROCEDURE TestProc AUTHID current_user
IS
flag number;
BEGIN
select count(*) into flag from all_tables where table_name='TEMP3';
if (flag=0) then
execute immediate 'create global temporary table TEMP3 on commit preserve rows as select * from BUSI_ECONTRACT';
else
execute immediate 'insert into TEMP3 select * from BUSI_ECONTRACT';
end if;
END ;
執(zhí)行存儲過程,順利通過。
命令行:
sqlplus / as sysdba
select name from user_source where type='PROCEDURE';
可查看sys用戶下所有存儲過程名字
select text from user_source where name='XXX'
可查看該存儲過程的內(nèi)容
plSQLdevloper工具:
左側(cè)找到‘Procedures’,點開之后即可查看當(dāng)前用戶的所有存儲過程。
右鍵點擊存儲過程,選擇‘view’可查看詳細(xì)信息