データベースの名前をパラメータとして使用するMySQLストアドプロシージャを作成して、特定のデータベースの詳細情報を含むテーブルを一覧表示します。
現在、「query」という名前のデータベースを使用していて、その中に次のテーブルがあるとします-
mysql> Show tables in query; +-----------------+ | Tables_in_query | +-----------------+ | student_detail | | student_info | +-----------------+ 2 rows in set (0.00 sec)
次に、ストアドプロシージャがあります。これは、データベースの名前をパラメータとして受け入れ、詳細情報を含むテーブルのリストを提供します-
mysql> DELIMITER//
mysql> CREATE procedure tb_list(db_name varchar(40))
-> BEGIN
-> SET @z := CONCAT('Select * from information_schema.tables WHERE table_schema = ','\'',db_name,'\'');
-> Prepare stmt from @z;
-> EXECUTE stmt;
-> END //
Query OK, 0 rows affected (0.06 sec) 次に、データベースの名前をパラメータとして指定して、このストアドプロシージャを呼び出します-
mysql> DELIMITER;
mysql> CALL tb_list('query')\G
*************************** 1. row ***************************
TABLE_CATALOG: def
TABLE_SCHEMA: query
TABLE_NAME: student_detail
TABLE_TYPE: BASE TABLE
ENGINE: InnoDB
VERSION: 10
ROW_FORMAT: Dynamic
TABLE_ROWS: 4
AVG_ROW_LENGTH: 4096
DATA_LENGTH: 16384
MAX_DATA_LENGTH: 0
INDEX_LENGTH: 0
DATA_FREE: 0
AUTO_INCREMENT: NULL
CREATE_TIME: 2017-12-13 16:25:44
UPDATE_TIME: NULL
CHECK_TIME: NULL
TABLE_COLLATION: latin1_swedish_ci
CHECKSUM: NULL
CREATE_OPTIONS:
TABLE_COMMENT:
*************************** 2. row ***************************
TABLE_CATALOG: def
TABLE_SCHEMA: query
TABLE_NAME: student_info
TABLE_TYPE: BASE TABLE
ENGINE: InnoDB
VERSION: 10
ROW_FORMAT: Dynamic
TABLE_ROWS: 4
AVG_ROW_LENGTH: 4096
DATA_LENGTH: 16384
MAX_DATA_LENGTH: 0
INDEX_LENGTH: 0
DATA_FREE: 0
AUTO_INCREMENT: NULL
CREATE_TIME: 2017-12-12 09:52:51
UPDATE_TIME: NULL
CHECK_TIME: NULL
TABLE_COLLATION: latin1_swedish_ci
CHECKSUM: NULL
CREATE_OPTIONS:
TABLE_COMMENT:
2 rows in set (0.00 sec) -
パラメータを使用してMySQLでプロシージャを作成しますか?
INとOUTを使用してパラメータを作成できます。 INは入力パラメータを取得するために使用され、OUTは出力に使用できます。 構文は次のとおりです DELIMITER // CREATE PROCEDURE yourProcedureName(IN yourParameterName dataType,OUT yourParameterName dataType ) BEGIN yourStatement1; yourStatement2; . . N END; // DELIMITER ; まず、テーブルを作成します。テーブルを作成するためのクエリは次のとおりです mysql>
-
MySQLストアドプロシージャに実装されているクエリからデータベース名を取得しますか?
データベース名を取得するには、以下の構文を使用します- select database(); 上記の構文をストアドプロシージャに実装しましょう- mysql> delimiter // mysql> create procedure get_procedure_database_name() -> begin -> select concat('The database name=',database()); -> end -> // Q