2016-05-11 4 views
0

テーブルの列への参照として変数を使用しようとすると、ストアドプロシージャに構文エラーが発生します。テーブルの列を変数

BEGIN 
SET @mycolumn = (SOME SELECT STATEMENT RETURNING MY COLUMN); 
SELECT [email protected] FROM mytable as a; 
END 

質問:私の構文の何が問題になっているのですか?

+0

削除 '3行目の終わりから、私は' JOIN'文でそれを使用する –

+0

@vkpので、それは –

+0

何をalias'dする必要があります構文エラーですか?恥ずかしがらないでください。 –

答えて

2

あなたは、動的SQLをやろうとしているように見えます。ここではそれを行うための一つの方法は次のとおりです。A`として

BEGIN 
SET @mycolumn = (SOME SELECT STATEMENT RETURNING MY COLUMN); 
DECLARE @sql varchar(20000); 
SET @sql = CONCAT('SELECT a.', @mycolumn, ' FROM mytable as a'; 
PREPARE stmt FROM @sql; 
EXECUTE stmt; 
DEALLOCATE PREPARE stmt; 
END 
+0

私はこれが好きですが、単純な 'SELECT * FROM mytable'を使ってみましたが、構文エラー、エラーから失敗しました'DECLARE'行を与えるだけです –

+0

MySQLを実行する' PREPARE'と 'EXECUTE'を使用しなければなりませんでした –

0

ヨルダン、

あなたは、このために、テーブル変数または動的SQLを使用する必要があります。

ここで私はテーブル変数でこれをどうしていますか。以下のクエリを実行して、

Declare @table as table (columnName dataType. 

Insert into @table 

SOME SELECT STATEMENT RETURNING YOUR COLUMN 

結果: -

SELECT * FROM @table 
+0

そうです、私はそれをjoinで使用していて、 'table.col'構文が必要です –

+0

Onesあなたはテーブル変数を持っていて、それをあなたの参加に使うことができます。 : - ; T.columnName = T2.Columnname –

関連する問題