關於oracle儲存過程的若干問題備忘

2021-04-13 03:02:10 字數 2013 閱讀 4341

1.在oracle中,資料表別名不能加as,如:

select

from

--正確

select

from

asa;

--錯誤

也許,是怕和oracle中的儲存過程中的關鍵字as衝突的問題吧

2.在儲存過程中,select某一字段時,後面必須緊跟into,如果select整個記錄,利用游標的話就另當別論了。

select

af.keynode 

into

kn from

where

=aid 

andaf.foundationid

=fid;

--有into,正確編譯

select

af.keynode 

from

where

=aid 

andaf.foundationid

=fid;

--error: pls

-00428

: an 

into

clause 

i***pected 

inthis 

select

statement

3.在利用select...into...語法時,必須先確保資料庫中有該條記錄,否則會報出"no data found"異常。

可以在該語法之前,先利用

select count(*) from 檢視資料庫中是否存在該記錄,如果存在,再利用select...into...

4.在儲存過程中,別名不能和欄位名稱相同,否則雖然編譯可以通過,但在執行階段會報錯

select

keynode 

into

kn from

where

=aid 

andfoundationid

=fid;

--正確執行

select

af.keynode 

into

kn from

where

=and

af.foundationid

=foundationid;

--執行階段報錯,提示

ora-

01422

:exact 

fetch

returns

more than requested 

number

ofrows

5.在儲存過程中,關於出現null的問題

假設有乙個表a,定義如下:

create

table

a(id 

varchar2(50

) primary

keynot

null

,vcount 

number(8

) not

null

,bid 

varchar2(50

) not

null

--外來鍵 

); 如果在儲存過程中,使用如下語句:

select sum(vcount) into fcount from a 

where

bid=

'******';

如果a表中不存在bid="******"的記錄,則fcount=null(即使fcount定義時設定了預設值,如:fcount number(8):=0依然無效,fcount還是會變成null),這樣以後使用fcount時就可能有問題,所以在這裡最好先判斷一下:

iffcount 

isnull

then

fcount:=0

;end if;

這樣就一切ok了。

6.hibernate呼叫oracle儲存過程

this

.pnumbermanager.gethibernatetemplate().execute(

newhibernatecallback() 

...}

);

關於oracle儲存過程的若干問題

關於oracle儲存過程的若干問題備忘 oracle儲存nullcompilation資料庫session 關於oracle儲存過程的若干問題備忘 1.在oracle中,資料表別名不能加as,如 也許,是怕和oracle中的儲存過程中的關鍵字as衝突的問題吧 2.在儲存過程中,select某一字段時...

關於Oracle儲存過程的若干問題備忘

1.在oracle中,資料表別名不能加as,如 也許,是怕和oracle中的儲存過程中的關鍵字as衝突的問題吧 2.在儲存過程中,select某一字段時,後面必須緊跟into,如果select整個記錄,利用游標的話就另當別論了。error pls 00428 an into clause is ex...

關於oracle儲存過程的若干問題備忘

1.在oracle中,資料表別名不能加as,如 2.在儲存過程中,select某一字段時,後面必須緊跟into,如果select整個記錄,利用游標的話就另當別論了。3.在利用select.into.語法時,必須先確保資料庫中有該條記錄,否則會報出 no data found 異常。可以在該語法之前,...