Sybase

在刪除之前檢查使用者定義的類型是否存在

  • January 20, 2017

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()可以工作。

引用自:https://dba.stackexchange.com/questions/161799