我有一个带有几个参数的SQL存储过程,我想使用(相同)行中的几个列来调用它来获取某些参数。这是当前实现的样子(不包括存在的未使用的列/参数):
DECLARE @id int;
select @id = min( id ) from Table_1;
declare @param1 nvarchar(10), @param2 nvarchar(10);
select @param1 = param1, @param2 = param2 from Table_1 WHERE id=@id;
EXEC [dbo].otherProc @param1, @param2;
这是对多个选择的改进,但我不禁想知道是否有一种方法可以在没有变量的情况下这样做(除了@id)。直接在EXEC语句中选择似乎不起作用(或者我可能不知道正确的语法)。
答案 0 :(得分:1)
您可以执行动态解决方案:
DECLARE @sql nvarchar(max)
SELECT @sql = '
EXECUTE dbo.OtherProc ''' + param1 + ''',''' + param2 + ''';'
FROM Table_1
WHERE id=@id;
EXECUTE (@sql);
答案 1 :(得分:0)
除非您可以更改存储过程,否则我提出的唯一改进是:
$scope.template.find(t => t.id === $scope.approveTemplate)
这样就可以在一个select语句中填充所有参数。