工具pl/sql developer
1. 建立資料庫儲存過程(程式視窗 program window)
1).無引數的儲存過程
create [or replace] procedure 儲存過程名 is/as
declare --宣告變數的標識(可以寫也可以不寫)
變數名 變數型別(值範圍);
變數名 變數型別(值範圍) :=值;
變數名 contant 資料型別 :=初始值 (常量)
begin
pl/sql塊
exception
異常end 儲存過程名;
2).有引數的儲存過程
create [or replace] procedure 儲存過程名(引數名 in/out 引數型別) is/as
declare --宣告變數的標識(可以寫也可以不寫)
變數名 變數型別(值範圍);
變數名 變數型別(值範圍) :=值;
begin
pl/sql塊
exception --異常處理標示
異常end 儲存過程名;
注意:有引數的儲存過程引數不用規定長度
in表示輸入引數,按值傳遞方式。
out 表示輸出引數,可以理解為按引用傳遞方式。可以作為儲存過程的輸出結果,供外部呼叫者使用。
in out 即可作輸入引數,也可作輸出引數。
3)儲存過程中游標的使用
as //定義(游標乙個可以遍歷的結果集)
cursor cur_1 is
select area_code,cmcode,sum(rmb_amt)/10000 rmb_amt_sn,
sum(usd_amt)/10000 usd_amt_sn
from bgd_area_cm_m_base_t
where ym >= vs_ym_sn_beg
and ym <= vs_ym_sn_end
group by area_code,cmcode;
begin //執行(常用for語句遍歷游標)
for rec in cur_1 loop
update *********xx_t
set rmb_amt_sn = rec.rmb_amt_sn,usd_amt_sn = rec.usd_amt_sn
where area_code = rec.area_code
and cmcode = rec.cmcode
and ym = is_ym;
end loop;
2.刪除儲存過程 (命令視窗command window)drop procedure 儲存過程名
3.執行儲存過程(命令視窗)
exec/execute 儲存過程名;
或 call 儲存過程名;
執行儲存過程 (sql 視窗sql window)
begin
儲存過程名(引數);
end;
4.編輯已存在的儲存過程(命令視窗 command window)
edit 儲存過程名
5.檢視已經存在的儲存過程(命令視窗 command window)
view 儲存過程名
6.測試儲存過程(測試視窗 test window)
在第7行輸入儲存過程名(); 如下圖所示
7.檢視正在執行的儲存過程
select name,locks,pins
from v$db_object_cache
where locks > 0 and pins > 0 and type='procedure';
8.殺死正在執行的資料
elect b.sid,b.serial#,a.object, 'alter system kill session ' || '''' || b.sid || ',' ||b.serial# || ''';' kill_command
from sys.v_$access a, sys.v_$session b
where a.type = 'procedure'
and (a.object like upper('%儲存過程名%') or
a.object like lower('%儲存過程名%'))
and a.sid = b.sid
and b.status = 'active';
alter system kill session 'sid,serial#';
9.oracle中的死鎖
查詢資料庫死鎖
select t2.username,t2.sid,t2.serial#,t2.logon_time,t3.sql_text
from v$locked_object t1,v$session t2,v$sqltext t3
where t1.session_id=t2.sid
and t2.sql_address=t3.address
order by t2.logon_time;
找到正在執行的包的 sid ,serial#
select b.sid,b.serial#,a.object, 'alter system kill session ' || '''' || b.sid || ',' ||b.serial# || ''';' kill_command
from sys.v_$access a, sys.v_$session b
where a.type = 'package'
and a.sid = b.sid
and b.status = 'active';
查詢出來的結果就是有死鎖的session了,
下面就是殺掉
拿到上面查詢出來的sid和serial#,填入到下面的語句中
alter system kill session 'sid,serial#';
Oracle資料庫儲存過程
建立語句 create or replace procedure 儲存過程名 儲存過程名定義 包括儲存過程名和引數列表。引數名和引數型別。引數名不能重複,引數傳遞方式 in,out,in out in 表示輸入引數,按值傳遞方式。out 表示輸出引數,可以理解為按引用傳遞方式。可以作為儲存過程的輸出...
oracle資料庫 儲存過程
儲存過程 stored procedure 是一組為了完成特定功能的sql 語句集,經編譯後儲存在資料庫中。使用者通過指定儲存過程的名字並給出引數 如果該儲存過程帶有引數 來執行它。儲存過程是資料庫中的乙個重要物件,任何乙個設計良好的資料庫應用程式都應該用到儲存過程。儲存過程是由流控制和sql 語句...
資料庫儲存過程基礎
1.建立簡單的儲存過程 create proc proc name as select from syscolumns where object name id crm customer 2 執行儲存過程 exec proc name 3 刪除儲存過程 drop proc proc name 4.帶...