5

有什么方法可以调用 sp_executesql 参数不依赖于它们在商店中定义的顺序?与 exec 相同的查询运行良好,如果您有相同的顺序,它也运行良好,但必须一个一个匹配参数是很痛苦的,因为有时我会使用助手动态生成调用,如果 dto 对象不'没有相同顺序的相同字段,效果不好。

create procedure ordertest
  @PARAM1 INT,
  @PARAM2 INT
  AS 
BEGIN
SELECT @PARAM1 AS ONE, @PARAM2 AS TWO
END

-- this works
EXEC ordertest @PARAM1 = 1, @PARAM2 = 2
exec sp_executesql N'exec ordertest @PARAM1, @PARAM2', N'@param1 int, @param2 int', @param2 = '2',  @param1 =  '1'
EXEC ordertest @PARAM2 = 2, @PARAM1 = 1

-- this doesn't work
exec sp_executesql N'exec ordertest @PARAM2, @PARAM1', N'@param1 int, @param2 int', @param2 = '2',  @param1 =  '1'
4

1 回答 1

9

你当然可以做到这一点。您只需要在调用它时添加哪个参数是哪个。

exec sp_executesql N'exec ordertest @PARAM2 = @Param2, @PARAM1 = @Param1', N'@param1 int, @param2 int', @param2 = '2',  @param1 =  '1'
于 2015-02-11T15:00:57.440 回答