使用行的多个列作为存储过程参数

时间:2016-05-18 13:03:13

标签: sql sql-server stored-procedures parameters

我有一个带有几个参数的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语句中选择似乎不起作用(或者我可能不知道正确的语法)。

2 个答案:

答案 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语句中填充所有参数。