2011-12-28 14 views
3

cfscriptでストアドプロシージャを呼び出していますが、コールにaddProcResultメソッドを追加すると、エラーが返されます。指定されたキーresultが構造体に存在しません。このメソッドを削除すると、エラーが修正され、結果には影響しませんが、エラーが表示された理由を知りたいと思います。 <cfstoredproc><cfprocparam>を使用してもエラーは発生しません。私はCF9を実行しています。私のコードは以下の通りです。cfscriptでaddstoredprocメソッドでエラーが発生しました。

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との下位互換性。スクリプトベースのproc呼び出しのサポートをどのように追加したかを見てみると、彼らは愚かさが発生したときにもっと劇的なエラーを投げる柔軟性を持っていましたが、CFタグでその贅沢はありません。同時に、Javaオブジェクトをインスタンス化し、その結果にvarをCFSETしようとしているときにNULLを返すメソッドを呼び出すと、その変数を読み取ろうとすると "Variable Undefinedエラー"が発生します。あなたがCFSETと呼んだコード。同様の問題の種類 - CFSETはまだ通ります - しかし、それが含まれているものは存在しません。 –

答えて

2

ストアドプロシージャが実際に(おそらくそれは、出力パラメータを返します - またはすべてで何も)結果セットを返さない場合は、このエラーを取得します。

.addProcResult()の呼び出しを削除するだけで問題ありません。

関連する問題