Jok*_*kin 2 t-sql sql-server sp-executesql dapper
有没有什么方法可以调用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'
Run Code Online (Sandbox Code Playgroud)
当然你可以做到这一点.您只需要在调用时添加哪个参数.
exec sp_executesql N'exec ordertest @PARAM2 = @Param2, @PARAM1 = @Param1', N'@param1 int, @param2 int', @param2 = '2', @param1 = '1'
Run Code Online (Sandbox Code Playgroud)