带有out参数的动态SQL

时间:2009-03-22 13:56:26

标签: tsql

我正在尝试将普通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

1 个答案:

答案 0 :(得分:2)

在声明和分配OUTPUT参数时都必须指定OUTPUT,所以我想问题是

,@stringActors =@stringActors
,@user_actor=@user_actor

应该是

,@stringActors =@stringActors OUTPUT
,@user_actor=@user_actor

另外,请查看此MSDN