繁体   English   中英

使用一行的几列作为存储过程参数

[英]Using several columns of a row as stored procedure 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语句中直接选择似乎无效(或者我可能不知道正确的语法)。

您可以执行动态解决方案:

DECLARE @sql nvarchar(max) 
SELECT @sql = '
EXECUTE dbo.OtherProc ''' + param1 + ''',''' + param2 + ''';'
FROM Table_1
WHERE id=@id;

EXECUTE (@sql);

除非您可以更改存储过程,否则我唯一想到的改进就是:

DECLARE @id int, @param1 nvarchar(10), @param2 nvarchar(10);
select @id = min( id ) from Table_1;

select  TOP 1 @id = id, 
        @param1 = param1, 
        @param2 = param2 
from Table_1 
order by id;

这样,您可以在单个select语句中填充所有参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM