データベース内のすべてのテーブルを繰り返し処理し、何らかのアクションを実行するストアドプロシージャを書きたいと思っています。MySQL: `show tables`のカーソルを宣言しますか?
drop procedure if exists p2;
DELIMITER //
CREATE PROCEDURE `p2`()
LANGUAGE SQL
DETERMINISTIC
SQL SECURITY DEFINER
COMMENT 'A procedure'
BEGIN
declare cur1 cursor for
show tables from my_database_name
END//
call p2;
これは機能しません。私は、私は本当にshow tables from database()
またはshow tables from (select database())
、どちらの作品言いたいの代わりshow tables from my_database_name
を行うので、私はSQLの構文近い「my_database_nameから番組表」もちろん
でエラーが発生しているというエラーを取得します。
ヘルプ? SQLでこれを行うことはできますか?まず、自分のプログラムからshow tables
を呼び出してから、結果セットを繰り返し処理する必要がありますか? database()
やshow tables
などの値をキャプチャするためのカーソルを作成するにはどうすればよいですか?
ありがとうございました!この場合、 'db_name'を' database() 'に置き換えることができ、期待通りに動作します。 – poundifdef