paramètres nommés dans sp_executesql

dapper sp-executesql sql-server tsql

Question

existe-t-il un moyen d'appeler sp_executesql avec des paramètres qui ne dépendent pas de l'ordre dans lequel ils sont définis dans le magasin? la même requête avec exec fonctionne bien, et si vous avez le même ordre, cela fonctionne aussi bien, mais c'est difficile de faire correspondre le paramètre un par un, car parfois je génère l'appel avec des helpers et si le dto object n'ont pas les mêmes champs dans le même ordre, ne fonctionne pas bien.

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'

Réponse acceptée

Bien sûr, vous pouvez le faire. Il vous suffit d’ajouter quel paramètre vous appelez.

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


Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi