oracle中游標,函式,過程的例子

2021-07-09 06:42:13 字數 4200 閱讀 3130

關於 游標 if,for 的例子 

create or replace procedure peace_if 

is cursor var_c is select * from grade; 

begin 

for temp in var_c loop 

if temp.course_name = 'os' then 

dbms_output.put_line('stu_name = '||temp.stu_name); 

elsif temp.course_name = 'db' then 

dbms_output.put_line('db'); 

else 

dbms_output.put_line('feng la feng la '); 

end if; 

end loop; 

end; 

---關於游標 for,case 的例子1 

create or replace procedure peace_case1 

is cursor var_c is select * from test_case; 

begin 

for temp in var_c loop 

case temp.vol 

when 1 then 

dbms_output.put_line('haha1'); 

when 2 then 

dbms_output.put_line('haha2'); 

when 3 then 

dbms_output.put_line('haha3'); 

when 4 then 

dbms_output.put_line('haha4'); 

else 

dbms_output.put_line('qita'); 

end case ; 

end loop; 

end; 

---關於游標 for,case 的例子2 

create or replace procedure peace_case2 

is cursor var_c is select * from test_case; 

begin 

for temp in var_c loop 

case 

when temp.vol=1 then 

dbms_output.put_line('haha1'); 

when temp.vol=2 then 

dbms_output.put_line('haha2'); 

when temp.vol=3 then 

dbms_output.put_line('haha3'); 

when temp.vol=4 then 

dbms_output.put_line('haha4'); 

else 

dbms_output.put_line('qita'); 

end case ; 

end loop; 

end; 

---關於for 迴圈的例子 

create or replace procedure peace_for 

is sum1 number :=0; 

temp varchar2(500); 

begin 

for i in 1..9 loop 

temp := ''; 

for j in 1 .. i 

loop 

sum1 := i * j; 

temp := temp||to_char(i) || ' * ' ||to_char(j) ||' = ' ||to_char(sum1) ||' '; 

end loop; 

dbms_output.put_line(temp ); 

end loop; 

end; 

---關於 loop迴圈的例子 

create or replace procedure peace_loop 

is sum1 number := 0; 

temp number :=0 ; 

begin 

loop 

exit when temp >= 10 ; 

sum1 := sum1+temp; 

temp := temp +1; 

end loop; 

dbms_output.put_line(sum1 ); 

end; 

---關於游標和loop迴圈的例子 

create or replace procedure loop_cur 

is stu_name varchar2(100); 

course_name varchar2(100); 

cursor var_cur is select * from grade ; 

begin 

open var_cur; 

loop 

fetch var_cur into stu_name,course_name; 

exit when var_cur%notfound; 

dbms_output.put_line(stu_name|| course_name); 

end loop; 

close var_cur; 

end; 

---關於異常處理的例子 

create or replace procedure peace_exp(in1 in varchar2) 

is c_n varchar2(100); 

begin 

select course_name into c_n from grade where stu_name = in1; 

dbms_output.put_line(c_n); 

exception 

when no_data_found 

then 

dbms_output.put_line('try'); 

when too_many_rows 

then 

dbms_output.put_line('more'); 

end; 

---關於異常處理的例子2 

create or replace procedure peace_insert ( c_n in varchar2) 

is error exception; 

begin 

if c_n = 'ok' 

then 

insert into course (course_name) values (c_n); 

elsif c_n = 'ng' then 

insert into course (course_name) values (c_n); 

raise error; 

else 

dbms_output.put_line('c_n' || c_n); 

end if; 

commit; 

exception 

when error then 

rollback; 

dbms_output.put_line('erro'); 

end; 

---關於包的例子 定義包 

create or replace package peace_pkg 

as function test1(in1 in varchar2) 

return number; 

procedure test2 (in2 in varchar2); 

end peace_pkg; 

---關於包的例子 定義包體 

create or replace package body peace_pkg 

as function test1(in1 in varchar2) 

return number 

as temp number; 

begin 

temp := 0; 

return temp; 

end; 

procedure test2 (in2 in varchar2) 

is begin 

dbms_output.put_line(in2); 

end; 

end peace_pkg;

oracle 中對函式,過程進行加解密

wrap工具是oracle用來加密procedure function package和type的工具,使用wrap加密後,pl sql 變得無法閱讀,但是oracle可以執行加密後的pl sql 需要注意wrap加密後,沒有辦法還原,因此如果在資料庫中建立的過程或函式是加密的,那麼如果以後需要修改...

Oracle的PL SQL 函式 過程 包 觸發器

sql語言只是一種訪問 運算元據庫的語言,並不能進行程式設計。pl sql procedual language sql 過程化sql語言是oracle在標準sql語言基礎上進行擴充套件後形成的程式語言。是一種oracle獨有的 支援應用開發的語言。普通的pl sql程式都是匿名的,比如 decla...

Oracle中的游標和函式

游標是一種 pl sql 控制結構 可以對 sql 語句的處理進行顯示控制,便於對錶的行資料 逐條進行處理。游標並不是乙個資料庫物件,只是存留在記憶體中。操作步驟 宣告游標 開啟游標 取出結果,此時的結果取出的是一行資料 關閉游標 到底那種型別可以把一行的資料都裝進來 此時使用 rowtype 型別...