mysql でストアド プロシージャを変更するコマンドは「ALTER PROCEDURE」、構文形式は「ALTER PROCEDURE ストアド プロシージャ名 [特性...]」、特性の取り得る値は CONTAINS SQL です、SQL、INVOKER、DEFINER などはありません。
(推奨チュートリアル: mysql ビデオ チュートリアル)
実際の開発プロセスでは、ビジネス要件が変更されると、が発生したため、MySQL のストアド プロシージャの変更は避けられません。
MySQL では、ストアド プロシージャは ALTER PROCEDURE ステートメントを通じて変更されます。このセクションでは、ストアド プロシージャの変更方法を詳しく説明します。
MySQL でストアド プロシージャを変更するための構文形式は次のとおりです:
ALTER PROCEDURE 存储过程名 [ 特征 ... ]
特性はストアド プロシージャの特性を指定します。可能な値は次のとおりです:
CONTAINS SQL は、サブルーチンに SQL ステートメントが含まれているが、データの読み取りまたは書き込みのためのステートメントは含まれていないことを意味します。
NO SQL は、サブルーチンに SQL ステートメントが含まれていないことを意味します。
READS SQL DATA は、サブルーチンにデータを読み取るステートメントが含まれていることを示します。
MODIFIES SQL DATA は、サブルーチンにデータを書き込むステートメントが含まれていることを示します。
SQL SECURITY { DEFINER |INVOKER } 実行権限を持つユーザーを指定します。
DEFINER は、定義者のみが実行できることを意味します。
INVOKER は、呼び出し元が実行できることを示します。
COMMENT 'string' はコメント情報を表します。
例 1
次の例では、ストアド プロシージャ showtuscore の定義を変更し、読み取りおよび書き込み権限を MODIFIES SQL DATA に変更し、次のことを示しています。呼び出し元が実行できることを示すコードは次のとおりです:
mysql> ALTER PROCEDURE showstuscore MODIFIES SQL DATA SQL SECURITY INVOKER; Query OK, 0 rows affected (0.01 sec)
コードを実行し、変更された情報を表示します。実行結果は次のとおりです:
mysql> SHOW CREATE PROCEDURE showstuscore \G *************************** 1. row *************************** Procedure: showstuscore sql_mode: STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION Create Procedure: CREATE DEFINER=`root`@`localhost` PROCEDURE `showstuscore`() MODIFIES SQL DATA SQL SECURITY INVOKER BEGIN SELECT id,name,score FROM studentinfo; END character_set_client: gbk collation_connection: gbk_chinese_ci Database Collation: latin1_swedish_ci 1 row in set (0.00 sec)
結果は、ストアド プロシージャが実行されたことを示します。正常に変更されました。実行結果から、データへのアクセス権限が MODIFIES SQL DATA に変更され、セキュリティ タイプも INVOKE に変更されたことがわかります。
ヒント: ALTER PROCEDURE ステートメントは、ストアド プロシージャの特定の特性を変更するために使用されます。ストアド プロシージャの内容を変更する場合は、最初に元のストアド プロシージャを削除してから、同じ名前で新しいストアド プロシージャを作成します。ストアド プロシージャの名前を変更する場合は、元のストアド プロシージャを削除します。最初にストアド プロシージャを作成し、次に別の名前で新しいストアド プロシージャを作成します。
関連する推奨事項: php トレーニング
以上がmysqlのストアドプロシージャを変更するコマンドは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。