十幾年沒有用oracle的儲存過程了,有些東西已經忘了,沒有想到今天又要用。在這裡寫個例子。
它演示了儲存過程的格式,游標的使用,迴圈、判斷的使用,還有直接執行乙個拼接的sql的用法。
以下是**:
createorreplace
procedure wanglc_test is
v_table_name
varchar2(50
); v_sql
varchar2(4000
);
cursor cur_get_users is
select username, created from
all_users;
v_username
varchar2(50
); v_created date;
begin
dbms_output.put_line(to_char(sysdate,
'yyyy-mm-dd hh24:mi:ss
') ||
'call procedure wanglc_test begin...');
open
cur_get_users;
loop
fetch
cur_get_users
into
v_username, v_created;
exit
when cur_get_users%
notfound;
dbms_output.put_line(to_char(sysdate,
'yyyy-mm-dd hh24:mi:ss
') ||''
||v_username ||'
-- '
||v_created);
if (v_username =
'sys
'or v_username =
'system
') then
dbms_output.put_line(to_char(sysdate,
'yyyy-mm-dd hh24:mi:ss
') ||''
||v_username ||'
is dba!!!');
/*insert into sys_user(name,created) values('sys',sysdate)
*/v_sql :='
insert into sys_user(name,created) values(
'''|| v_username ||
''',sysdate)';
dbms_output.put_line(to_char(sysdate,
'yyyy-mm-dd hh24:mi:ss
') ||''
||v_sql);
execute
immediate v_sql;
execute immediate '
commit';
endif;
endloop;
close
cur_get_users;
dbms_output.put_line(to_char(sysdate,
'yyyy-mm-dd hh24:mi:ss
') ||
'call procedure wanglc_test end.');
end wanglc_test;
如果儲存過程編譯出錯,可以在這裡找錯誤點:
select * from all_errors where name = upper('wanglc_test');
另外,可以在plsql developer中右鍵點選儲存過程名稱進行測試。此處略。
oracle 儲存過程例1
一 功能設計 開發目標研究生招生系統,要求設計pl sql程式對考生的成績資料進行處理,處理的邏輯是根據每門專業課的最低分數線和總分的最低分數線自動將考生歸類為錄取考生 調劑考生 落選考生。為此設計2個資料表,graduate資料表存放考生成績,result資料表存放處理結果,pl sql程式完成的...
Oracle 儲存過程練習小樣例
建立更新的儲存過程,輸錯訂單號顯示訂單不存在 create or replace procedure upd shipdate orderid number,shipdate date ise no row exception begin update ord set v shipdate ship...
Oracle的儲存過程。
近日,因為工作需要,時間投入到寫儲存過程的中。下面貼上儲存過程。進行分析,以便自己記憶,和朋友分享儲存過程的寫法。曾幾何時,認為儲存過程很難,現在看來也並非如此。此儲存過程乃是我們用到遞迴刪除。宣告乙個帶引數的儲存過程,引數都是varchar型,如果帶有輸出引數的話,引數後面跟的型別必須有個out ...