關於 游標 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 型別...