2009-03-22 17 views
0

通常のSTPを部分的に動的なSQLに変換しようとしています パラメータに値を設定するために動的部分が必要です。後でSTPの非動的部分で使用します。私はそれはOKだけど、それが空である外パラメータを持つ動的SQL

私が何をしないのです@stmtダイナミックの内部でそれを印刷

---------------------------------------------- ----------------構築文

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 

------------------------- -------------------------------------実行

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 

----- -------------------------------------------------- ----------残りのSTP(動的ではない) @stringActorsを印刷

答えて

2

OUTPUTは両方とも指定する必要がありますnは宣言してOUTPUTパラメータを割り当てるので、私はこれが数回の後ろで私をビットたこのMSDN

+0

をチェックし、問題が

,@stringActors [email protected] ,@[email protected]_actor 

はまた

,@stringActors [email protected] OUTPUT ,@[email protected]_actor 

あるべきだと思いますしかし、一度あなたのベルトの下でその経験を得ると、あなたはそれを忘れることはありません。また、sp_executesqlのparam-setter句の読み書きを容易にするため、 "@pActors"や "iActors"のような "内部"パラメータの前に、たくさんのdynamic-SQLを書く人からのヒントコマンド。同様に: 'EXECUTE sp_executesql @stmt、N ' @pStringActors varchar(4000)出力'、@pStringActors = @stringActors OUTPUT' – NateJ

関連する問題