儲存過程語言

2021-08-15 07:55:18 字數 2446 閱讀 5719

僅在本儲存過程中有效的變數。區域性變數不允許有預設值

在同一使用者活動期間,儲存過程中的可被同一資料庫的其他儲存過程訪問的變數。全域性變數必須在所有使用的儲存過程中定義,並且必須給出預設值,實際的預設值是第一次被訪問時定義的預設值。

變數在語句塊內有效,如語句塊巢狀,則同名的內層定義覆蓋其外層定義,內層語句執行完成後,外層定義重新有效。

用define定義變數。

如:define x int;

例子:

- let a, b = c, d;

- let a, b = (select empname, empno from emp

where empno = 125);

- select empname into name from emp

where empno = 120;

- execute procedure

read_address

('lamitry')

into

p_fname, p_lname, p_addr;

- call read_address('lamitry')

returning p_fname, p_lname, p_addr;

儲存過程表示式可以是除聚集函式表示式外的任何sql算術表示式

例子:

var

1; var1 + var2 + 5 ;

get_duedat(lastname = 'lamitry');

格式:

if ··· then

···elif ··· then

···else

···endif

while與foreach的區別:

while迴圈的條件是不定的,迴圈次數不定,因而可能出現無窮迴圈;

for與foreach迴圈的條件是確定的,迴圈次數也是明確的,不可能出現無窮迴圈。

例子:

let i = 1;

while

i<10

insert into tab2 values(i);

let i = i+1;

endwhile

用foreach語句可以查詢或操作一組資料

foreach隱式定義並開啟乙個游標

三種格式:

foreach定義的游標在以下情況下關閉:

1. 無行返回

2. 事務提交或回滾導致非保護游標關閉

3. 迴圈非正常退出(使用exit或on exception)

建立與刪除:

create temp 名....... drop tabel 名 cascade;

事務的作用:維護資料的一致性。

on exception

rollback work;

end exception

begin work;

delete from....

update ...

insert into ...

commit work;

如果儲存過程中沒有異常處理語句,那麼執行到異常處將會中斷。

異常捕獲:on exception

示例:下例捕獲多個錯誤,並採取相應的措施。若錯誤號為300採取措施b,若錯誤號為210,211,212採取措施a,若為其他錯誤,採取措施c

on exception set error_num

---action c

endexception

onexception

in(-300)set error_num

---action b

endexception

onexception

in(-210,-211,-212)set error_num

---action a

endexception

異常捕獲:raise exception

用raise exception語句模擬異常的產生,該異常可被on exception語句捕獲。

格式:

raise exception 錯誤號,isam 錯誤號, 錯誤 文字變數

sql錯誤號和isam錯誤號均可使spl表示式,且其計算結果是乙個常數(錯誤號)

兩類儲存過程

下列使用者可以建立儲存過程

下列使用者可以執行儲存過程

PL SQL語言 儲存過程 儲存函式

給變數賦值用 賦值 連線兩個字串用 連線,用加號是不好使的!str1 str2 str3 if 條件 then 業務邏輯 elsif 條件 then 業務邏輯 end if 其中的elsif需注意,並不是elseif。cursor c1 is select from emp where deptno...

儲存過程 在java語言中呼叫儲存過程

首先一定要連線資料庫啊 private static connection conn static catch classnotfoundexception e catch sqlexception e 例項一 create or replace procedure selectemp emp no...

儲存過程系列之儲存過程sql查詢儲存過程的使用

1.查詢某個表被哪些儲存過程 以下簡稱 sp 使用到 select distinct object name id from syscomments where id in select object id from sys.objects where type p and text like ta...