我感覺它就是乙個函式呀....大概沒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...