儲存過程建立語法

2021-08-31 11:22:37 字數 2855 閱讀 6664

儲存過程建立語法:

create or replace procedure 儲存過程名(param1 in type,param2 out type)

as 變數1 型別(值範圍);

變數2 型別(值範圍);

begin

select count(*) into 變數1 from 表a where列名=param1;

if (判斷條件) then

select 列名 into 變數2 from 表a where列名=param1;

dbms_output。put_line(『列印資訊』);

elsif (判斷條件) then

dbms_output。put_line(『列印資訊』);

else

raise 異常名(no_data_found);

end if;

exception

when others then

rollback;

end;

注意事項:

1,  儲存過程引數不帶取值範圍,in表示傳入,out表示輸出

2,  變數帶取值範圍,後面接分號

3,  在判斷語句前最好先用count(*)函式判斷是否存在該條操作記錄

4,  用select 。。。into。。。給變數賦值

5,  在**中拋異常用 raise+異常名

/*儲存過程:

create or replace procedure proce_test(

a in varchar2,

b in varchar2,

c out varchar2

)asbegin

c:=a||b;

end proce_test;/*/

//儲存過程有兩個輸入乙個輸出引數

class.forname("oracle.jdbc.driver.oracledriver").newinstance();

connection conn= drivermanager.getconnection(databaseurl,databaseuser,databasepassword);

callablestatement cmt= conn.preparecall("");

cmt.setstring(1,"hello ");//輸入

cmt.setstring(2,"world!");//輸入

cmt.registeroutparameter(3, types.varchar );//註冊輸出引數

resultset rs= cmt.executequery();

string str= cmt.getstring(3);//獲取輸出值

rs.close();

cmt.close();

conn.close();

%>

已命名的異常

命名的系統異常                          產生原因

access_into_null                   未定義物件

case_not_found                     case 中若未包含相應的 when ,並且沒有設定

else 時

collection_is_null                集合元素未初始化

curser_already_open          游標已經開啟

dup_val_on_index                   唯一索引對應的列上有重複的值

invalid_cursor                 在不合法的游標上進行操作

invalid_number                       內嵌的 sql 語句不能將字元轉換為數字

no_data_found                        使用 select into 未返回行,或應用索引表未初始化的 

too_many_rows                      執行 select into 時,結果集超過一行

zero_divide                              除數為 0

subscript_beyond_count     元素下標超過巢狀表或 varray 的最大值

subscript_outside_limit       使用巢狀表或 varray 時,將下標指定為負數

value_error                             賦值時,變數長度不足以容納實際資料

login_denied                           pl/sql 應用程式連線到 oracle 資料庫時,提供了不

正確的使用者名稱或密碼

not_logged_on                       pl/sql 應用程式在沒有連線 oralce 資料庫的情況下

訪問資料

program_error                       pl/sql 內部問題,可能需要重灌資料字典& pl./sql

系統包

rowtype_mismatch                宿主游標變數與 pl/sql 游標變數的返回型別不相容

self_is_null                             使用物件型別時,在 null 物件上呼叫物件方法

storage_error                        執行 pl/sql 時,超出記憶體空間

sys_invalid_id                         無效的 rowid 字串

timeout_on_resource         oracle 在等待資源時超時

儲存過程建立語法

儲存過程建立語法 create or replace procedure 儲存過程名 param1 in type,param2 out type as 變數1 型別 值範圍 變數2 型別 值範圍 begin select count into 變數1 from 表a where列名 param1 ...

儲存過程建立語法

儲存過程建立語法 create or replace procedure 儲存過程名 param1 in type,param2 out type as 變數1 型別 值範圍 變數2 型別 值範圍 begin select count into 變數1 from 表a where列名 param1 ...

儲存過程建立語法

儲存過程建立語法 create or replace procedure 儲存過程名 param1 in type,param2 out type as 變數1 型別 值範圍 變數2 型別 值範圍 begin select count into 變數1 from 表a where列名 param1 ...