我想在INSERT命令中使用变量。此变量包含来自storedprocedure的结果值:
declare @File as varbinary(max)
exec @File=[dbo].[MySp]
但如果我在INSERT命令中使用@File
,则会在表
insert into [dbo].[Plots] values ('test', @File)
我的存储过程:
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 :(得分: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