【发布时间】:2021-12-27 05:28:30
【问题描述】:
我遇到了执行脚本任务的问题。 当前任务正在执行存储过程,结果分配给变量。 现在我想在单次执行任务中同时执行存储过程和 sql select 语句 我尝试通过使用如下所示的动态 sql 语句来实现它。
SQL 脚本
DECLARE @Query NVARCHAR(250)
DECLARE @ParmDefinition NVARCHAR(250)
DECLARE @Id int
DECLARE @Usr_Id VARCHAR(50)
DECLARE @TCId INT
DECLARE @IsSuccess bit
Set @Query = 'Exec InsertSp @Id,@Usr_Id,@TCId OUTPUT'
SET @ParmDefinition = '@Id INT,@Usr_Id VARCHAR(50),@TCId INT OUTPUT'
EXEC sp_executesql @Query,
@ParmDefinition,
@Id=2,
@Usr_Id='domain\fn.lastname',
@TCId=@TCId OUTPUT
Set @Query = 'SELECT TOP (1) @IsSuccessOut = IsSuccess
FROM dbo.TableA AS a
INNER JOIN dbo.TableB AS b
ON a.Id = b.Id
WHERE (b.Name = ''LoadDaily'')
ORDER BY StartTime DESC'
SET @ParmDefinition = '@IsSuccessOut INT OUTPUT'
EXEC sp_executesql @Query,@ParmDefinition,@IsSuccessOut=@IsSuccess output
SELECT @TCId AS 'TCId',@IsSuccess as 'IsSuccess'
我创建了变量并将上面的查询分配给它。
在执行 SQl 任务中,我已经分配了变量
【问题讨论】:
-
当您写“无法将输出值获取到结果变量”时,您的意思是什么?任务出错了吗?当任务完成时,您的用户变量不包含预期值,还有什么?
-
任务成功,但用户变量没有应该作为任务的一部分执行的 sql 查询的输出值。如果 sql 查询或我的方法有任何问题,请告诉我
-
如果您将执行 SQL 任务的内容替换为简化的
SELECT 0 AS 'TCId', CAST(1 AS bit) as 'IsSuccess',您看到分配的值了吗?无论哪种方式,您如何确定该值是否已分配? -
现在我看到我收到错误“[执行 SQL 任务] 错误:为变量“TCId”赋值时出错:“HRESULT 异常:0xC0015005”。我将变量添加到观察窗口并放断点看值是否变化