動的 SQL と concat メソッドを使用せずに、SQL クエリで変数を使用するにはどうすればよいですか?
スクリプトの開始時に変数を宣言して、スクリプト全体でそれらを使用できるようにしたいと思います (テーブル名など)。
これが私がやりたいことの例です:
declare variables
Set @Table1 = 'WhatsOn_20141208'
-- drop and re-create table
drop table if exists @Table1;
CREATE TABLE @Table1 (
rac_account_no varchar(100),
addressLine2 varchar(100)
);
-- load data into table
LOAD DATA LOCAL INFILE 'C:/Example.txt'
INTO TABLE @Table1
FIELDS TERMINATED BY '|'
ENCLOSED BY '"' LINES TERMINATED BY '\n'
IGNORE 1 LINES;
-- update addressLine2 column
Update @Table1
set addressLine2 = REPLACE(addressLine2,"*UNKNOWN*","");
テーブル名が変更された場合、すべての出現箇所を検索して置換するのではなく、変数で一度変更できるようにしたいと考えています。
これまでに見つけた唯一の解決策は、動的 SQL を使用して、次の例のように文字列を連結することです。
SET @s = CONCAT('select * from ', @Cat, ' where ID = ', @ID_1);
PREPARE stmt1 FROM @s;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
もっと簡単な方法はありますか?
乾杯、ルーカス