2017-04-04 8 views
1

INSERTコマンドで変数を使用したいと思います。この変数は、のStoredProcedureから結果値含ま:insertコマンドで変数を使用する

declare @File as varbinary(max) 
exec @File=[dbo].[MySp] 

enter image description here

を私はINSERTコマンドで@Fileを使用する場合の別の値は

insert into [dbo].[Plots] values ('test', @File) 

enter image description here

テーブルに書き込まれます私のストアドプロシージャ:

CREATE PROCEDURE [MySp] 
AS 
BEGIN 

EXEC sp_execute_external_script @language = N'R' 
    , @script = N'_RCODE_' 
    , @input_data_1 = N'_INPUT_QUERY_' 
    ,@output_data_1=N'OutputDataset' 
--- Edit this line to handle the output data frame. 
    WITH RESULT SETS (([plot] VARBINARY(max))); 
END; 
+0

ていますか?その場合は、格納されているproc構文が正しくありません。 – Igor

+0

outパラメータのデータ型は何ですか? –

+0

VARBINARY(MAX) – Kaja

答えて

2

あなたは、ストアドプロシージャの使用は間違っています。 最初のスクリーンショットにレコードセットがありますが、実行後にexec @File=[dbo].[MySp]には、変数@Fileのレコードセットがありません。 あなたが@File

@return_statusで@return_status

だと、モジュールのリターン 状態を保存するオプションの整数変数です。この変数は、EXECUTE ステートメントで使用する前に、バッチ、 ストアドプロシージャ、または関数で宣言する必要があります。

右のクエリは、このようにすることができます:あなたは、あなたのストアドプロシージャでのない `out`パラメータは必ず

declare @File as varbinary(max) 
DECLARE @Table TABLE 
(
    plot VARBINARY(MAX) 
) 

INSERT @Table 
exec [dbo].[MySp] 

SELECT @File = MAX(plot) 
FROM @Table 

insert into [dbo].[Plots] values ('test', @File) 
1

あなたのEXECコールはSPの結果コードを取得しています。これは成功のために0です。明示的なreturn文がない場合、私は仮定します。

あなたのSPからの実際のデータをキャプチャする方法の詳細については、この回答を参照してください:https://stackoverflow.com/a/3963991/16777

関連する問題