- - PR -
動的SQLへのパラメータセット
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-12-02 09:52
こちらの会議室では初めての投稿となります。
宜しくお願い致します。 SQLServer2000でのストアドプロシージャー内での「動的SQL」 についてですが,過去ログと「sp_executesql」をキーワードに 調べてみて以下のコードを記述したのですが,思うような 動作をしません。(経験値はこれが始めてのストアド程度です) ======================================================================== DECLARE 各種宣言〜〜 ★略:一定の間Loopさせます FETCH NEXT FROM colKensin --FETCHの作成と1行目の読み込み INTO @SuisenNo, @KensinYM, @Sisin, @CalcSuiryo SET @Parm_nSisin = 'ZenSisin' + @CN SET @Parm_nSuiryo = 'ZenSuiryo' + @CN BEGIN SET @Parm_Sisin = N'@p_Sisin int' SET @Parm_CalcSuiryo = N'@p_CalcSuiryo int' SET @Parm_SuisenNo = N'@p_SuisenNo char(7)' SET @Parm_paraYM = N'@p_paraYM char(6)' SET @SQL = N' UPDATE [tbl_Kensin] SET '+ @Parm_nSisin +' = @p_Sisin, '+ @Parm_nSuiryo +' = @p_CalcSuiryo WHERE SuisenNo = @p_SuisenNo AND KensinYM = @p_paraYM ' EXECUTE sp_executesql @SQL, @Parm_Sisin, @Parm_CalcSuiryo, @Parm_SuisenNo, @Parm_paraYM, @p_Sisin=@Sisin, @p_CalcSuiryo=@CalcSuiryo, @p_SuisenNo=@SuisenNo, @p_paraYM=@paraYM END ========================================================================= 動的SQLに関してですが,上記コードでいうと @p_Sisin については 別に動的SQLにしなくてもFETCHで取得した変数を直接指定すれば動作するが, 列名などに変数を使用できない為,動的SQLにする必要がある。と理解(誤解?) したので動的SQLの作成をしました。 ステップインしてみたところ @p_Sisin,@p_CalcSuiryoなどにNullがセット されているようで(@Sisin,@CalcSuiryoなどは数値が取得されています) それが原因の一つだとは思うのですが,もっと大きな間違いをしている と・・・。 文法的(根本的)間違いも含めご指摘頂ければと思います。 又,提示内容に不備などがあれば合わせてご指摘ください。 宜しくお願い致します |
|
投稿日時: 2004-12-02 17:35
上記の件,文法ミスを修正して解決しました。
|
1