Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在insert命令中使用变量_Sql_Sql Server_Tsql - Fatal编程技术网

Sql 在insert命令中使用变量

Sql 在insert命令中使用变量,sql,sql-server,tsql,Sql,Sql Server,Tsql,我想在INSERT命令中使用一个变量。此变量包括StoredProcess的结果值: 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_exter

我想在INSERT命令中使用一个变量。此变量包括StoredProcess的结果值:

 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;

您的
EXEC
调用将获得SP的结果代码,如果没有显式的return语句,则该代码为0表示成功


有关如何从SP捕获实际数据的更多详细信息,请参阅此答案:

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

@返回\u状态

@文件中

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

正确的查询可以如下所示:

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)

您确定它不是存储过程中的
out
参数吗?如果是这种情况,则存储的proc语法不正确。out参数的数据类型是什么?它是VARBINARY(MAX)@Igor我已经用SP更新了我的帖子