sp_executesql中的命名参数



是否可以用不依赖于存储中定义顺序的参数来调用sp_executesql?exec的同一个查询运行良好,如果您有相同的顺序,它也运行良好,但必须一个接一个地匹配参数是一件痛苦的事情,因为有时我会使用helper动态生成调用,如果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'

当然可以。当你调用它时,你只需要添加哪个参数就是哪个

exec sp_executesql N'exec ordertest @PARAM2 = @Param2, @PARAM1 = @Param1', N'@param1 int, @param2 int', @param2 = '2',  @param1 =  '1'

相关内容

  • 没有找到相关文章

最新更新