在insert命令中使用变量

时间:2017-04-04 09:32:05

标签: sql sql-server tsql

我想在INSERT命令中使用变量。此变量包含来自storedprocedure的结果值:

 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;

2 个答案:

答案 0 :(得分:2)

您使用存储过程是错误的。 第一个屏幕截图上有一个记录集,但在执行exec @File=[dbo].[MySp]后,您没有变量@File中的记录集。 你有

  

@return_status

@File

中的

  

@return_status是一个存储返回值的可选整数变量   模块的状态。必须在批处理中声明此变量,   存储过程或函数在EXECUTE中使用之前   言。

正确的查询可以是这样的:

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 :(得分:1)

你的EXEC调用正在获取SP的结果代码,在没有明确的return语句的情况下,我认为这是成功的0。

有关如何从SP捕获实际数据的更多详细信息,请参阅此答案:https://stackoverflow.com/a/3963991/16777