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...