-- created on
2016/4/22
by administrator
declare
p_dname varchar2(50) := '微軟';
p_deptno number := 60;
p_deptloc varchar2(100) := '公尺國';
v_state varchar2(50);--狀態
begin
--內部巢狀塊
《查詢是否存在》
begin
select dname into v_state from dept where deptno = p_deptno;
dbms_output.put_line('部門名:' || v_state) ;
end;
--內部巢狀塊(可訪問外部變數,但外部不能訪問內部變數)
《更新部門資訊》
declare
begin
update dept set dname = p_dname,loc = p_deptloc where deptno = p_deptno ;
dbms_output.put_line('更新部門資訊成功') ;
end;
--處理異常
exception
when no_data_found then
dbms_output.put_line('未找到部門,新建...:') ;
--內部巢狀塊
《插入乙個新部門》
declare
begin
insert into dept(deptno,dname,loc) values(p_deptno,p_dname,p_deptloc);
dbms_output.put_line('新建部門成功') ;
exception
when others then
dbms_output.put_line('此過程徹底失敗') ;
end;
--rollback;
end;
declare
v_number1 number;
v_number2 number;
begin
--進行外部迴圈
for v_number1 in
1 .. 9
loop
--進行內部迴圈
for v_number2 in
1 .. v_number1
loop
--列印九九乘法口決表
dbms_output.put(v_number1
|| '*'
||v_number2
||'='
||v_number1*v_number2
||' ');
endloop;
dbms_output.put_line('');
endloop;
dbms_output.put_line('*****完成*****====');
end;
結果:
1
*1=1
2*1=2
2*2=4
3*1=3
3*2=6
3*3=9
4*1=4
4*2=8
4*3=12
4*4=16
5*1=5
5*2=10
5*3=15
5*4=20
5*5=25
6*1=6
6*2=12
6*3=18
6*4=24
6*5=30
6*6=36
7*1=7
7*2=14
7*3=21
7*4=28
7*5=35
7*6=42
7*7=49
8*1=8
8*2=16
8*3=24
8*4=32
8*5=40
8*6=48
8*7=56
8*8=64
9*1=9
9*2=18
9*3=27
9*4=36
9*5=45
9*6=54
9*7=63
9*8=72
9*9=81
*****完成*****====
declare
sqlstr varchar2(200);
v_empno number := 7902;
begin
《一條普通查詢》
begin
--定義sql語句
sqlstr := 'select * from emp';
--執行上面這名sql
execute immediate sqlstr;
dbms_output.put_line('第一條成功!');
exception
when
others
then
null;
end;
《傳值和返回值的查詢》
declare
v_ename varchar2(50);
v_job varchar2(50);
v_sal number;
begin
--定義sql語句
sqlstr := 'select ename,job,sal from emp where empno = :tempid ';
--執行上面這名sql,並傳值我取返回值
execute immediate sqlstr
into v_ename,v_job,v_sal
using v_empno;
dbms_output.put_line('工號:'||v_empno||'名字:'||v_ename||'職位:'||v_job||'工資:'||v_sal);
exception
when
others
then
null;
end;
dbms_output.put_line('*****完成*****====');
end;
結果:
第一條成功!
工號:7902名字:ford職位:analyst工資:
3000
*****完成*****====
oracle 儲存過程 游標巢狀
這是一段將裝置的gps資料的工作小時數進行統計的儲存過程,首先通過游標取出所有裝置資訊,然後對每一台裝置進行工作小時數統計,其中用到了游標巢狀 create or replace procedure cmtools.proc statistics workhour is v begindate da...
oracle 儲存過程(三)
create or replace procedure ecs customdetail 0929 建立儲存過程 islongerstation varchar2 50 定義變數 type v cursor is ref cursor 變義游標 detailid v cursor in id v c...
oracle儲存過程超級詳解
oracle 儲存過程總結 1 建立儲存過程 create or replace procedure test var name 1 in type,var name 2 out type is 宣告變數 變數名 變數型別 begin 儲存過程的執行體 end test 列印出輸入的時間資訊 e.g...