システム開発ブログ/ ソフトウエア開発部 Yahoo!ブックマークに登録 Google ブックマーク はてなブックマーク Livedoorクリップ シェア

システム開発ブログ

Twitterでilovex_officialをフォローしてください

最近の記事

カテゴリー

部署

月別アーカイブ

以前の部署別ブログ

Transact-SQLで動的SQLを使用しての値の取得について

八田
八田 (2010年7月14日 22:25)
ソフトウエア開発部 / データベース
先日、SQL Server の Transact-SQL でのバッチ処理を久しぶりに作成しましたが、
その際に、動的SQLを扱いました。

よく使うものかと思いますが、記述方法をど忘れしていた為、備忘的に書きます。


通常、テーブルの値をSELECTして変数に値を取得する際には、
以下の様に取得しますが、
SELECT @sName = MemberName
  FROM M_Member
 WHERE MemberID = @iMemberID;

SELECT @sName;
今回は、動的SQLを使用して、値を取得する必要が有りました。
DECLARE @sSql		nvarchar(max);
DECLARE @sParam		nvarchar(max);
DECLARE @sName		nvarchar(50);

SET @sSql = '';
SET @sSql = @sSql + N'SELECT @sNameOut = MemberName';
SET @sSql = @sSql + N'  FROM M_Member';
SET @sSql = @sSql + N' WHERE MemberID = ' + @iMemberID;

SET @sParam = N'@sNameOut nvarchar(50) OUTPUT';
EXECUTE sp_executesql @sSql, @sParam, @sNameOut = @sName OUTPUT;

SELECT @sName;
上記のように、@sSQL のSQL文中に記述した @sNameOut は、文字列扱いの
埋め込みパラメータとなりますので、
sp_executesqlの第2引数で、埋め込みパラメータの定義します。
第3引数では、埋め込みパラメータを 変数 にセットします。
その際、パラメータが出力パラメータで有ることを示す OUTPUTキーワードを記述します。


複雑な処理の場合には、便利な動的SQLによる処理ですが、
動的SQLの場合には、コンパイル時には、SQLの構文エラーとはならないので、
複雑なSQL文の処理の場合には、特にコーディングに注意が必要ですね。

「システム開発ブログ」へのコメントやご意見等ありましたら、 ファンページまでお願いします。  Facebook のファンページ

お問い合せ・情報はこちらの電話番号におかけください:03-3232-2525 お問合せ・資料請求はこちらをクリックしてください
ページのトップ
システム開発・一括受託開発。見積依頼受付中

システム開発専用サイト

システム開発の流れ・手順、実績など。アイロベックスのシステム開発を紹介。

VB .NETを主言語としたWebアプリケーションの開発

要件分析から保守まで、お客様の現場での問題解決だけでなく、IT経営の援護者としてトータルソリューションサービスを提供しています。

MovableType を使ったウェブサイト構築

魅力あるウェブサイトデザイン、構成はもとよりMovableTypeを使用したウェブサイトの作成、JAVA、CGIによる注文フォームの作成等、ビジネスを強力にサポートします。

フォルダーアクセス権限確認ツール『AD-Folder』

Windowsフォルダーアクセス権限確認ツール

フォルダーアクセス権限を一目で確認。使用版を無償でご利用いただけます。

スクール運営を応援する講座情報管理システム『CMS+AD for School』

Webとリアルをつなぐコンテンツマネージメントシステム

Webサイト・モバイルサイト・チラシ(PDF)・カタログ(InDesign)を、簡単かつ正確に作成できます。

「システム開発ブログ」の更新情報をTwitterで。

Twitter公式アカウントに認定されています

「システム開発ブログ」の更新情報をTwitterで。ぜひ、フォローをお願いします。