Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
ALTER 文を実行する前に、オブジェクトのスケルトンインスタンスが存在することを確認します。
sa_make_object( objtype, objname [, owner [, tabname ] ] )
objtype: 'procedure' | 'function' | 'view' | 'trigger' | 'service' | 'event'
objtype 作成されるオブジェクトのタイプを指定する CHAR(30) パラメーター。objtype が 'trigger' の場合、この引数はトリガーが作成されるテーブルの所有者を示します。
objname 作成されるオブジェクトの名前を指定する CHAR(128) パラメーター。
owner 作成されるオブジェクトの所有者を指定する任意の CHAR(128) パラメーター。デフォルト値は CURRENT USER です。
tabname この CHAR(128) パラメーターは、objtype が 'trigger' である場合にのみ必要です。トリガーを作成するテーブルの名前を指定するときに使用します。
このプロシージャーは、データベーススキーマの作成または変更のために繰り返し実行されるスクリプトで使用すると便利です。このようなスクリプトに共通する問題は、最初の実行では CREATE 文を実行する必要がありますが、その後は ALTER 文を実行する必要があることです。このプロシージャーを使用すると、オブジェクトが存在するかどうかを確認するためにシステムビューを問い合わせる必要がなくなります。
使用するには、このプロシージャーの後にオブジェクト定義全体を含む ALTER 文を実行します。
データベースオブジェクトの作成または変更には、RESOURCE 権限が必要です。
オートコミット。
次の文は、スケルトンプロシージャー定義が作成されていることを確認し、プロシージャーを定義し、プロシージャーに対するパーミッションを付与します。これらの命令が記述されたスクリプトファイルは、データベースに対して繰り返し実行でき、エラーは起こりません。
CALL sa_make_object( 'procedure','myproc' ); ALTER PROCEDURE myproc( in p1 INT, in p2 CHAR(30) ) BEGIN // ... END; GRANT EXECUTE ON myproc TO public;
次の例は、sa_make_object システムプロシージャーを使用して、スケルトン Web サービスを追加します。
CALL sa_make_object( 'service','my_web_service' );