我正在尝试将普通STP转换为部分动态SQL 我需要动态部分来设置一个参数值,我稍后会在STP的非动态部分中使用它。
当我在动态@stmt的内部打印它时没关系,但外面是空的
我错过了什么?
----------------------------------------------- ---------------构建陈述
set @stmt = 'set @stringActors = cast((select actors.actor_id
'+@from_clause+' '
+@where_clause+' '
+'for xml raw,type) as varchar(max)) print @stringActors'
print @stmt
----------------------------------------------- ---------------执行
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 =@stringActors
,@user_actor=@user_actor
,@internal_search_actor=@internal_search_actor
,@internal_search_route_manager=@internal_search_route_manager
,@internal_search_terminal_id=@internal_search_terminal_id
,@ACTOR_TYPE_INSTITUTE=@ACTOR_TYPE_INSTITUTE
,@ACTOR_TYPE_LOCATION=@ACTOR_TYPE_LOCATION
----------------------------------------------- ------------------ STP的其余部分(不是动态的) print @stringActors
答案 0 :(得分:2)
在声明和分配OUTPUT参数时都必须指定OUTPUT,所以我想问题是
,@stringActors =@stringActors
,@user_actor=@user_actor
应该是
,@stringActors =@stringActors OUTPUT
,@user_actor=@user_actor
另外,请查看此MSDN