[解決済み] 変数としてのテーブル名
2022-04-22 20:31:15
質問
私はこのクエリを実行しようとしています。
declare @tablename varchar(50)
set @tablename = 'test'
select * from @tablename
この場合、以下のようなエラーが発生します。
Msg 1087, レベル 16, ステート 1, ライン 5
テーブル変数 "@tablename"を宣言する必要があります。
テーブル名を動的に入力させるには、どのような方法がありますか?
どのように解決するのですか?
ご質問のような静的なクエリの場合、テーブル名とカラム名は静的である必要があります。
動的なクエリの場合は、完全な SQL を動的に生成し、sp_executesql を使用してそれを実行する必要があります。
ここでは、異なるデータベースの同じテーブル間のデータを比較するために使用するスクリプトの例を示します。
静的なクエリです。
SELECT * FROM [DB_ONE].[dbo].[ACTY]
EXCEPT
SELECT * FROM [DB_TWO].[dbo].[ACTY]
の名前を簡単に変更したいので
table
と
schema
ということで、こんなダイナミッククエリを作ってみました。
declare @schema varchar(50)
declare @table varchar(50)
declare @query nvarchar(500)
set @schema = 'dbo'
set @table = 'ACTY'
set @query = 'SELECT * FROM [DB_ONE].[' + @schema + '].[' + @table + '] EXCEPT SELECT * FROM [DB_TWO].[' + @schema + '].[' + @table + ']'
EXEC sp_executesql @query
動的なクエリには細かい配慮が必要で、メンテナンスも大変なので、一読されることをお勧めします。 ダイナミックSQLの呪いと恵み
関連
-
[解決済み] SQL Server FOR EACH ループ
-
[解決済み] SQLテーブルで重複する値を検索する
-
[解決済み] SQL Server テーブルにカラムが存在するかどうかを確認する方法は?
-
[解決済み] SQL Server にテーブルが存在するかどうかを確認する
-
[解決済み] INNER JOIN ON vs WHERE句
-
[解決済み] SQL Serverで、指定したテーブルを参照しているすべての外部キーを一覧表示するにはどうすればよいですか?
-
[解決済み] MySQLでFULL OUTER JOINを行うにはどうすればよいですか?
-
[解決済み] "ON UPDATE CASCADE "を使用する場合について
-
[解決済み】SQL Serverで既存のテーブルにデフォルト値を持つカラムを追加する
-
[解決済み】SQL Serverで外部キーを作成するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] データベースのインデックス作成はどのように行われるのですか?[クローズド]
-
[解決済み] 複数の列でgroup byを使用する
-
[解決済み] Oracleの全テーブルのリストを取得しますか?
-
[解決済み] INNER JOIN ON vs WHERE句
-
[解決済み] SQL JOIN - WHERE句とON句の比較
-
[解決済み] SQL Serverには、.NETのMath.Maxのような2つの値を取るMax関数はありますか?
-
[解決済み] SQLでランダムな行を要求する方法は?
-
[解決済み] 既存のカラムにIDを追加する
-
[解決済み] SQL ServerでGROUP BYを使って文字列を連結する方法とは?
-
[解決済み] 別のテーブルに一致する項目がない行を選択するにはどうすればよいですか?