如何在SQL查詢中使用變量而不使用使用動態SQL和concat方法?在沒有動態SQL的表名中使用變量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;
是否有更簡單的方法?
乾杯, 盧卡斯
你不能,你必須使用'動態sql'爲此... – sgeddes 2014-12-11 02:16:02
你可以有一個配置文件中的表名,並在.sql文件中有宏表名,有一個Python程序讀取配置文件並修改sql文件並使用修改的sql來達到您的目的。 – radar 2014-12-11 02:17:27
數據庫結構中有多個表具有相同列的表經常是數據庫中存在問題的標誌。很少有任何理由有多個相同的表。你應該重新訪問你的數據庫設計。 – 2014-12-11 02:20:02