2009-11-17 59 views
4

我有一個Oracle腳本,如下所示:甲骨文「SQL錯誤:在指數:: 1人失蹤IN或OUT參數」

variable L_kSite number; 
variable L_kPage number; 
exec SomeStoredProcedureThatReturnsASite(:L_kSite); 
exec SomeStoredProcedureThatAddsAPageToTheSite(:L_kSite, :L_kPage); 
update SiteToPageLinkingTable 
set HomePage = 1 
where kSite = :L_kSite and kPage = :L_kPage; 

據說最後的語句是一個綁定變量的有效使用,但當我嘗試運行該腳本,我得到這個在最後一行:

SQL Error: Missing IN or OUT parameter at index:: 1 

我不知道如何繼續在這裏作爲我不是甲骨文特別精通。

+2

做你在sqlplus跑的?是你抓住ORA-17041的錯誤代碼?你能提供兩個程序的簽名嗎?桌上有觸發器嗎? – Christian13467 2009-11-18 08:02:14

+0

錯誤消息的格式表明您正在使用SQL Developer來運行此腳本。是這樣嗎?如果是這樣,該工具的版本是什麼?另外,數據庫的版本是什麼? – APC 2009-11-18 13:39:46

+0

@APC:SQL Developer 1.5.5,Oracle Express 10.2.0.1.0。 @Christian:No;根本沒有ORA錯誤代碼;我可以但是錯誤肯定發生在UPDATE語句上;沒有。 – Otis 2009-11-18 16:56:17

回答

4

基於上面留下的評論我在sqlplus而不是SQL Developer下運行這個,並且UPDATE語句完美運行,讓我相信這是SQL Developer中的問題,特別是因爲沒有返回ORA錯誤號。謝謝你帶領我朝着正確的方向前進。

+1

這不是SQL Developer的問題。 '變量L_kSite號碼'是一個特定的SQL plus結構。 – 2014-08-15 16:52:44

9

當我在Java代碼中使用JDBC時,我有類似的錯誤。

根據this website(第二個awnser),它建議您嘗試執行缺少參數的查詢。

例如:

exec SomeStoredProcedureThatReturnsASite(:L_kSite); 

您正在嘗試沒有最後一個參數來執行查詢。

也許在SQLPlus它沒有相同的要求,所以它可能是一個運氣,它在那裏工作。

1

我認爲它與jdbc有關。

我有一個類似的問題(失蹤PARAM)時,我有一個地方像這樣的情況:

a = :namedparameter and b = :namedparameter 

這沒關係,當我有這樣的:

a = :namedparameter and b = :namedparameter2 (the two param has the same value) 

所以這是一個問題命名參數。 我認爲在命名參數處理方面存在一個bug,它看起來像是隻有第一個參數獲得了正確的值,第二個參數沒有被驅動程序類設置。也許它不是一個錯誤,只是我不知道什麼,但無論如何,我想這是SQL開發人員和爲你運行的sqlplus之間的區別的原因,因爲據我所知,SQL開發人員使用jdbc驅動程序。

0

我得到了同樣的錯誤,發現原因是錯誤或丟失外鍵。 (使用JDBC)

1

我有這個錯誤,因爲包含一個問號列的別名一些錯字(例如contract.reference作爲合同?REF)