J'essaie de convertir un STP normal en un SQL partiellement dynamique J'ai besoin de la partie dynamique pour définir la valeur d'un paramètre, que j'utiliserais plus tard dans ma partie non-dynamique du STP.SQL dynamique avec les paramètres out
quand je l'imprime à l'intérieur de la dynamique @stmt il est OK, mais en dehors est vide
ce que je suis absent?
---------------------------------------------- ---------------- instruction de construction
set @stmt = 'set @stringActors = cast((select actors.actor_id
'[email protected]_clause+' '
[email protected]_clause+' '
+'for xml raw,type) as varchar(max)) print @stringActors'
print @stmt
------------------------- ------------------------------------- exécution
EXECUTE sp_executesql @stmt,N'
@stringActors varchar(4000) output
,@user_actor bigint
,@internal_search_actor varchar(30)
,@internal_search_route_manager varchar(30)
,@internal_search_terminal_id varchar(30)
,@ACTOR_TYPE_INSTITUTE int
,@ACTOR_TYPE_LOCATION int'
,@stringActors [email protected]
,@[email protected]_actor
,@[email protected]_search_actor
,@[email protected]_search_route_manager
,@[email protected]_search_terminal_id
,@[email protected]_TYPE_INSTITUTE
,@[email protected]_TYPE_LOCATION
----- -------------------------------------------------- ---------- reste de STP (non dynamique) print @stringActors
Cela m'a bit dans le derrière à quelques reprises mais une fois que vous avez acquis cette expérience, vous ne l'oubliez jamais. Aussi, un conseil de quelqu'un qui écrit beaucoup de dynamic-SQL: préfixez vos paramètres "internes" avec quelque chose comme "@pActors" ou "iActors", car cela facilite la lecture et l'écriture de la clause param-setter de sp_executesql commander. Comme ceci: 'EXECUTE sp_executesql @stmt, N ' @ pStringActors varchar (4000) sortie', @pStringActors = @stringActeurs OUTPUT' – NateJ