當前位置:成語大全網 - 書法字典 - oracle存儲過程的基本語法及註意事項

oracle存儲過程的基本語法及註意事項

基本結構

創建或替換過程存儲過程的名稱。

數字參數

數字參數

)是

可變整數:=;

可變日期;

開始

結束存儲過程名

SELECT INTO語句

將select查詢的結果存儲到變量中可以同時存儲多個列,並且多個變量中必須有壹個。

記錄或拋出壹個異常(如果沒有記錄,拋出NO_DATA_FOUND)

例子

開始

從typestruct中選擇colcollinto變量variable,其中xxx

例外

當沒有找到數據時

xxxx

結束;

如果判斷

如果V_TEST=那麽

開始

做某事

結束;

結束IF;

While循環

WHILE V_TEST= LOOP

開始

XXXX

結束;

結束循環;

變量賦值

v _ TEST:=;

在中使用遊標和for

光標cur是SELECT * FROM xxx

開始

對於曲線循環中的cur_result

開始

V_SUM :=cur_result列名+cur_result列名。

結束;

結束循環;

結束;

帶參數的光標

遊標C_USER(C_ID NUMBER)是從用戶中選擇的名稱,其中TYPEID = C _ ID

OPEN C_USER(變量值);

將C_USER提取到V_NAME中;

退出FETCH C _ USER % NOTFOUND

做某事

結束循環;

關閉C _ USER

使用pl/SQL developer進行調試

連接到數據庫後,建立壹個測試窗口。

在窗口中輸入調用SP的代碼f開始調試CTRL+N單步調試。

關於oracle存儲過程的壹些備忘錄

在oracle中,數據表別名不能這樣添加。

從appinfo a中選擇壹個appname正確的

從appinfo中選擇壹個appname作為;錯誤

可能是怕和oracle中的存儲過程壹樣和關鍵字沖突吧。

當在存儲過程中選擇壹個字段時,它必須後跟into,如果使用遊標選擇整個記錄,則另當別論。

從APPFOUNDATION af中選擇af keynode到kn中,其中af appid=aid,af foundationid = fid已經正確編譯成。

從APPFOUNDATION af中選擇af keynode,其中af appid=aid,af foundationid = fid沒有進入編譯錯誤提示編譯

錯誤:PLS:此SELECT語句中應該有INTO子句

當使用select into語法時,您必須首先確保數據庫中存在該記錄,否則您將報告壹個no data found異常。

您可以在語法之前使用select count(*) from檢查記錄是否存在於數據庫中,如果存在,則使用select into。

在存儲過程中,別名不能與字段名相同,否則,雖然編譯可以通過,但在運行時會報告錯誤。

從APPFOUNDATION中選擇keynode到kn中,其中appid=aid,foundationid = fid真實運行

從APPFOUNDATION af中選擇af keynode到kn中,其中af appid=appid,af foundationid = foundationid運行時錯誤提示

ORA:精確提取返回的行數超過了請求的行數

存儲過程中的空問題

假設有壹個定義如下的表A

創建表A(

id varchar()主鍵不為空

vcount number()不為空

Bid varchar()非空外鍵

);

如果在存儲過程中使用以下語句。

select sum(vcount)into fcount from A where bid = XXXXXX;

如果表A中沒有bid= xxxxxx的記錄,fcount=null(即使定義fcount時設置了fcount number (): =等默認值,仍然會變成null),那麽以後使用fcount時可能會出現問題,所以這裏最好先判斷壹下。

如果fcount為空,則

fcount:=;

結束if;

所以壹切都好。

Hibernate調用oracle存儲過程

這個pnumberManager getHibernateTemplate()執行(

新HibernateCallback() {

公共對象doInHibernate(會話Session)

引發hibernate exception SQLException {

可調用語句cs =會話

連接()

prepare call({ call modifyapppnumber _ remain(?)} );

cs setString(foundation id);

cs execute();

返回null

}

Lishi Xinzhi/Article/program/Oracle/201311/16725