2016-12-10 8 views
0

SQL接続サーバーからカーソルを戻すoracleプロシージャの結果を取得したいので、どのタイプの出力パラメータを使用する必要がありますか?ありがとうございます。結果の出力パラメータのタイプは、SQLサーバー経由で参照カーソルを返すOracleパッケージプロシージャですか?

DECLARE @InputPara NVARCHAR(MAX) 
DECLARE @OutputPara ????????? 

EXECUTE ('BEGIN ? := Package.MyFunction(?,?); END;', @InputPara, @OutputPara OUTPUT) AT linked 
+0

'Package.MyFunction(?、?)'によって返されるデータ型は何ですか? – FDavidov

+0

データタイプは何ですか?私は@OutputParaに設定する必要があります – JimmyN

+0

下記の私の答えをご覧ください(数分後)。 – FDavidov

答えて

0

まず第一に、何あなたが呼び出していることは値を返す関数であるから、私はあなたが無名ブロックを必要とわからない(すなわちBEGIN/END)とは、単にパラメータ受信を持つ関数を呼び出すことができます(あなたが行ったように)関数によって返された値と(言語が許せば)句INTOを追加します。

第二に、渡されるパラメータの順序(すなわち@InputPara, @OutputParaは)あなたのケースで文が(私はあなたの構文ではなく、私が提案1を使用しています)でなければならないことを意味し、?の順序と一致する必要があります

EXECUTE ('BEGIN ? := Package.MyFunction(?,?); END;', 
     @OutputPara OUTPUT      , 
     @InputPara_1        , 
     @InputPara_2        ) AT linked ; 

は[あなたが関数((?,?))に渡される2つのパラメータを持っていることに注意してください。]

あなたの質問(@OutputParaのタイプ)については、それから、(関数によって返される同じタイプでなければなりませんあなたの質問は評価できません)。

+0

この関数はCursorを返すので、@OutputParaのどのタイプを設定する必要がありますか? – JimmyN

+0

この場合、カーソル "オブジェクト"を返す必要があります。これは、あなたが働いているDBMSと、Oracleの機能を呼び出すことに依存します。関数を呼び出す特定のDBMS(返されるカーソルは、Oracleではなく、呼び出すDBMS)で処理する方法をWebでチェックしてください。 – FDavidov

関連する問題