TECHNOLOGY

FAQ (よくある質問)

対象バージョン : SQL Anywhere (Adaptive Server Anywhere) version 8.0.2以降

QUESTION ( SQ0908086 )

オブジェクトの存在を確認する方法がありますか?

ビューやプロシージャ、ファンクションなどを作成/変更する際に、CREATEとALTERのどちらを使えばいいか判断したいのですが、既に対象のオブジェクトが存在するかどうか確認できる方法はありますか。

ANSWER

既存のオブジェクトの存在確認は、システム・ビューに問い合わせを行うことで可能ですが、このような場合には、sa_make_object システム・プロシージャを使用することにより、処理を簡単にすることができます。

sa_make_object システム・プロシージャは指定されたオブジェクトが存在していれば何もしませんが、指定されたオブジェクトが存在していない場合、指定されたオブジェクトのスケルトン(空のオブジェクト)を作成します。

この為、sa_make_object システム・プロシージャとALTER文をセットで使用いたしますと、オブジェクトの存在確認は不要となります。

例)
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 システム・プロシージャの詳細につきましては、以下のオンライン・マニュアルをご参照ください。
http://www.ianywhere.com/developer/product_manuals/sqlanywhere/0902/ja/html/dbrfja9/00000650.htm