2011-12-28 27 views
3

addstoredproc方法我打電話與CFSCRIPT一個存儲過程,但是當我添加addProcResult方法調用,ColdFusion的返回錯誤指定的關鍵,因此,不會在結構存在。刪除該方法可修復錯誤並且不會影響結果,但我仍然想知道錯誤出現的原因。使用<cfstoredproc><cfprocparam>不會生成錯誤。我正在運行CF9。我的代碼如下。錯誤與CFSCRIPT

spService = new storedProc(); 
spService.setDatasource("mydb"); 
spService.setProcedure("someSP"); 
spService.setUsername("TaskRunner"); 
spService.setPassword("password"); 
spService.addProcResult(name="result",resultset=1); 
spService.execute(); 
+1

存儲過程是否實際返回結果集?還是通過輸出參數返回響應? Procs可以做到兩者兼得(或者兩者都不)!但是如果它只做後者 - 你不會得到一個結果集,並且因此將沒有任何東西可以注入,這可以解釋爲什麼你沒有得到錯誤刪除調用以保存/存儲「不存在的結果集」 –

+0

proc不返回結果集或輸出。所以我想這是有道理的,但爲什麼不使用標籤錯誤? – RHPT

+1

我的猜測是:與以前版本的CF向後兼容。看到9如何增加對基於腳本的proc調用的支持,他們可以靈活地在惡意發生時拋出更多戲劇性的錯誤 - 但對於CF標籤沒有那麼奢侈。巧合的是,如果您實例化一個java對象並調用一個在嘗試對其結果進行CFSET var時返回NULL的方法,那麼當您嘗試讀取它時會得到一個「變量是未定義的錯誤」 - 即使它清楚你稱之爲CFSET的代碼。類似的問題 - CFSET仍然經歷 - 但它包含的內容是不存在的。 –

回答

2

如果其實沒有返回結果存儲過程(也許它返回一個輸出參數 - 或者什麼都沒有),你會得到這個錯誤。

只需刪除對.addProcResult()的調用,就可以了。