2016-11-10 3 views
-1

私は$table = 'datatables_demo';をやりたかったと言いますが、そうすることができますselect * from $table?これどうやってするの?mysqlコマンドラインで変数を宣言できますか

BELOW

mysql> select * from datatables_demo;           +----+------------+-----------+-------------+--------+------------+--------+ 
| id | first_name | last_name | position | office | start_date | salary | 
+----+------------+-----------+-------------+--------+------------+--------+ 
| 1 | Tiger  | Nixon  | Accountant | Tokyo | 2016-11-08 | 320800 | 
| 2 | Garrett | Winters | Accountant2 | Tokyo | 2016-11-08 | 170750 | 
| 3 | Ashton  | Cox  | Accountant3 | Tokyo | 2016-11-08 | 86000 | 
| 4 | Cedric  | Kelly  | Accountant4 | Tokyo | 2016-11-08 | 433060 | 
| 5 | Tiger5  | Nixon  | Accountant | Tokyo | 2016-11-08 | 320800 | 
+----+------------+-----------+-------------+--------+------------+--------+ 
5 rows in set (0.00 sec) 

mysql> $table = 'datatables_demo'; 
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '$table = 'datatables_demo'' at line 1 
mysql> table = 'datatables_demo'; 
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'table = 'datatables_demo'' at line 1 
mysql> var table varchar2(20) 
    -> ; 
+1

の可能性のある重複[MySQLで変数を宣言するには?](http://stackoverflow.com/questions/11754781/how-to-declare-a-variable- in-mysql) – csmckelvey

+0

このdupeはこの問題の解決には役立ちません。 mysqlにストアドプロシージャとconcatと準備されたstmtが必要です。すべてでは、あまりROIのない馬の多く – Drew

+0

コマンドラインから不可能 – Rahul

答えて

1

LOGあなたは、動的SQLステートメントを実装するためにPREPARE STATEMENTを使用する必要があります。

はあなたに例を示し

delimiter // 
CREATE PROCEDURE dynamic(IN tbl CHAR(64), IN col CHAR(64)) 
BEGIN 
    SET @s = CONCAT('SELECT ',col,' FROM ',tbl); 
    PREPARE stmt FROM @s; 
    EXECUTE stmt; 
    DEALLOCATE PREPARE stmt; 
END 
// 
delimiter ; 
+0

なぜチャーコールですか?これらの入力パラメータは、代わりにvarcharでなければなりません – Rahul

+0

tks具体例の 'select * from ; '? – HattrickNZ

関連する問題