sp_droptype
プロシージャを使用して、ユーザー定義タイプを削除できます。
そのため、sp_droptype
を使用して呼び出す "クリーン"スクリプトに、このようなsqsh -i
呼び出しがいくつかあります。ただし、タイプが実際に存在する場合にのみsp_droptype
を条件付きで呼び出すことや、タイプが存在しない場合にサイレントになるように指示することはできません。
型が存在するかどうかをテストし、実際に存在する場合にのみsp_droptype
を呼び出す方法はありますか?これにより、よりクリーンな出力が得られます。
これはSQL Serverと同じように機能します。次のスタイルの構成を使用します。
_IF OBJECT_ID('dbo.MyObject') IS NOT NULL
BEGIN
EXEC sp_droptype 'dbo.MyObject';
END
_
OBJECT_ID(...)
は、現在のデータベースに格納されているすべてのオブジェクトの sysobjectsからのobject_id を表す整数を返します。オブジェクトが存在しない場合は、NULLを返します。
オブジェクトの存在をテストする別の方法:
_IF EXISTS (SELECT 1 FROM systypes st WHERE st.name = 'MyType')
BEGIN
EXEC sp_droptype 'MyType';
END
_
現時点ではASEで型を作成する機能がないため、OBJECT_ID()
が機能するかどうかははっきりとはわかりません。