Oracle儲存過程解析

2021-12-30 06:53:53 字數 1821 閱讀 1151

我感覺它就是乙個函式呀....大概沒get到點,求告知。

【通用結構】

create or replace procedure儲存名 (輸入變數名變數的資料結構)

asbegin

操作語句

end;

【通用語句】呼叫儲存過程

exec過程名()

【例題1】建立儲存過程,刪除score表中某學號的學生資料

create or replace procedure p_delscore

(v_sno score.sno%type)

asbegin

delete from score where sno=v_sno;

if sql%rowcount=0 then

dbms_output.put_line('nodata');

else

dbms_output.put_line('delete'||sql%rowcount||'row');

commit;

end if;

end;【執行】exec p_delscore('0601020212')

【解析】資料操作成功,一定要寫commit提交。儲存過程最重要的就是安全性,如果**執行停止了,防止資料庫會處於某種不安全狀態 。

【例題2】建立儲存過程,給出需要修改的院名,修改sdept表中該院系的名稱

create or replace procedure p_update

(v_name sdept.deptno%type,v_dname sdept.deptno%type)

asbegin

update sdept set dname=v_dname where dname=v_name;

if sql%rowcount!=0 then

dbms_output.put_line('更新'||sql%rowcount||'行');

commit;

else

dbms_output.put_line('沒有資料更新');

end if;

end;【執行】exec p_update('計算機資訊院','計算機學院')

【例題3】結合游標,建立儲存過程,查詢某一門課程的所有不及格學生的學號,將其儲存在不及格表中。

create table failgrade(

sno char(15),

cno char(15),

grade number(6,2)

)create or replace procedure p_inscore

(v_cname course.cname%type)

as cursor scfail_cur is

select * from score where grade<60 and cno =(select cno from course where cname =v_cname);

sf scfail_cur%rowtype;

begin

open scfail_cur;

loop

fetch scfail_cur into sf;

if scfail_cur%rowcount=0 then

dbms_output.put_line('nodata');

exit;

else

exit when scfail_cur%notfound;

insert into failgrade values(sf.sno,sf.cno,sf.grade);

end if;

end loop;

close scfail_cur;

end;

Oracle 儲存過程 解析xml

mark下 declare 定義xml 串 s xmlstr varchar2 420 201701 2017051324123412431 procedurep prm integer pls integer asbegin dbms output.put line prm integer end...

Oracle儲存過程呼叫儲存過程

oracle儲存過程呼叫有返回結果集的儲存過程一般用光標的方式,宣告乙個游標,把結果集放到游標裡面,然後迴圈游標 declare newcs sys refcursor cs1 number cs2 number cstype table rowtype table列的個數和newcs返回的個數一樣...

ORACLE儲存過程

自定義函式開始 create or replace function fn wftemplateidget templatecategoryid number,organid number,templatemode number return number istemplateid number i...