PLSQL儲存過程常用基礎語句記錄

2021-09-24 11:28:04 字數 4115 閱讀 3575

declare

–定義變數: 變數名 型別

dname_ varchar2(40);

dname_2 dept.dname%type;

–定義表的全部字段物件

dept_1 dept%rowtype;

/*定義變數

*/dno_ number(4);

begin

–變數賦值

dno_ := 20;

–執行sql

select dname into dname_2 from dept; --where deptno = dno_;

select * into dept_1 from dept; --where deptno = dno_;

–輸出dbms_output.put_line(dname_2);

dbms_output.put_line(dept_1.deptno);

dbms_output.put_line(dept_1.dname);

dbms_output.put_line(dept_1.loc);

end;

declare

deptno_ number(4);

deptname_ varchar2(20);

loc_ varchar2(20);

begin

deptno_ :=30;

–選擇結構

if (deptno_ = 10) then

select dname into deptname_ from dept where deptno=deptno_;

elsif(deptno_ = 20) then

select loc into loc_ from dept where deptno=deptno_;

else

dbms_output.put_line(『沒有值』);

–結束選擇結構

end if;

dbms_output.put_line(deptname_);

dbms_output.put_line(loc_);

end;

declare

–賦初始值

tno_ number(20) default 10;

begin

–賦值tno_ := 20;

case

when (tno_=10) then

dbms_output.put_line(『這是10』);

when (tno_=20) then

dbms_output.put_line(『這是20』);

end case;

end;

–迴圈結構:loop

declare

i number(4) default 5;

begin

–開始迴圈

loop

dbms_output.put_line(i);

i := i-1;

–迴圈結束的條件

exit when(i<1);

–結束迴圈

end loop;

end;

–迴圈結構:while

declare

i number(4) default 5;

begin

–開始迴圈

while (i < 10) loop

dbms_output.put_line(i);

i := i + 1;

–結束迴圈

end loop;

end;

–迴圈結構:for

declare

begin

–正序開始迴圈

for a in 1…10 loop

dbms_output.put_line(a);

–結束迴圈

end loop;

–倒序開始迴圈

for a in reverse 1…10 loop

dbms_output.put_line(a);

–結束迴圈

end loop;

end;

declare

–定義表名

tablename_ varchar2(20) := 『dept』;

–定義字段結果

deptresult_ dept%rowtype;

empresult_ emp%rowtype;

–定義sql語句

sql_ varchar2(200);

begin

tablename_:=『emp』;

–動態sql語句賦值

sql_ := 'select * from 『||tablename_||』 where ';

–選擇判斷對應的表名

if(tablename_ = 『dept』) then

sql_:= sql_||『deptno = 10』;

–執行動態sql並將結果賦給deptresult_

execute immediate sql_ into deptresult_;

dbms_output.put_line('deptno = '||deptresult_.deptno);

dbms_output.put_line('deptname = '||deptresult_.dname);

dbms_output.put_line('loc = '||deptresult_.loc);

else

sql_ := sql_||『empno = 7369』;

–執行動態sql並將結果賦給empresult_

execute immediate sql_ into empresult_;

dbms_output.put_line(empresult_.ename);

dbms_output.put_line(empresult_.mgr);

dbms_output.put_line(empresult_.job);

end if;

end;

–異常:預定義異常

declare

in_ number(5);

begin

in_ := 10;

in_ := in_ / 0;

–開始處理異常

exception

–匹配異常型別

when zero_divide then

dbms_output.put_line(『不能除零』);

–型別不匹配時的其他異常

when others then

dbms_output.put_line(『其他異常』);

end;

–異常:非預定義異常

declare

–定義異常

eeee exception;

–聯絡錯誤

pragma exception_init(eeee,-1476);

in_ number(5) :=5;

begin

in_ := in_ / 0;

–開始處理異常

exception

–匹配異常型別

when eeee then

dbms_output.put_line(『不能除零』);

end;

2.自增id造數

declare

i integer;

dbid integer;

begin

i:=1;

loop

insert into t_wb_task

(fid, fcode, fname, fclass, fproperty, fpage_url

--變數直接傳值 ---字串拼接數字用||

(dbid, null, null, null, null, null, null, 'exceptionhandle.'||dbid );

i:=i+1;

---小批量提交一次 提高響應速度

if mod(i,1000)=0 then

commit;

exit when i>100000 --停止條件

end loop;

end

PL SQL儲存過程

or replace 建立或替換,如果存在就替換,不存在就建立create or replace procedure piscursor cisselect from dept2 for update beginfor row record in c loopif row record.deptno...

pl sql 儲存過程

在這段時間的開發中資料庫用的是oracle以前用的都是mssql它們的儲存過程的寫法還有一點不一樣,所以花了一天的時間看了看!以下是我做的乙個小例子!create table mytesttable id number,name varchar2 10 insert into mytesttable...

PL SQL 儲存過程

1 游標的設計開發 什麼是游標,為什麼用游標,怎樣使用游標 2 儲存過程 儲存過程的建立,引數使用,儲存過程的執行 3 儲存函式的設計 函式的建立,引數使用,函式的呼叫 4 包的設計與應用 什麼是包,包的建立及使用 儲存過程 建立語法 create or replace procedure proc...