2011-07-08 11 views
1

SQL Serverでは、テーブルが存在するかどうかを確認するためにSQLを記述できます。どのようにADSのためにそれを行うことができますか?テーブルが存在するかどうかを検出する

私はテーブルが他にこれこれを行う存在するかどうかを言うためにいくつかのDelphiのコードを記述する必要があります...

答えて

2

システム・プロシージャsp_GetTablesはにあなたが接続されているディレクトリに存在するどのようなテーブルを伝えることができます:

をPROCEDURE sp_GetTables(NULL、NULL、NULL、 'TABLE')

に非SQLソリューションをEXECUTEだろうAdsCheckExistence APIを使用してください。

+0

ありがとう!あなたは0/1か 'TRUE/FALSE'を返すことができるなら、どんな考えですか?あなたがそうのような手順を選択することができADSの10.xでは – Jon

+0

:TABLE_NAME =(PROCEDUREのsp_GetTablesをEXECUTE(NULL、NULL、NULL、 'テーブル'))Aから SELECT * 'TEST.ADT' 私は考え結果レコードの数をチェックするだけです.1はTRUEです。0はFALSEです。 –

+0

テーブル名をsp_GetTablesに渡すほうが簡単です。 実行手順sp_GetTables(NULL、NULL、 'TEST.ADT'、 'TABLE') –

1

私はADSのユーザーではないので、私は詳細にお答えすることはできません。

はThe'reがsystem.tablesは、テーブルに関する情報を表示しているhttp://devzone.advantagedatabase.com/dz/webhelp/Advantage10.1/index.html

を参照してください。 テーブルをチェックするSQLクエリを書くこともできると思います。

+0

ありがとうございました。ちょうど見ていた、それはsystem.tablesが私が持っていないデータ辞書の一部であるようだ。 – Jon

0

私はピーターの答えが好きですが、あなたが何をする必要があるかによって、TRY、CATCH、FINALLYステートメントを探しているかもしれません。

TRY 
    // Try to do something with the table 
    select top 1 'file exists' from "non_existing_table"; 

CATCH ADS_SCRIPT_EXCEPTION 

    // If a "7041 - File does not exist" error ocurrs 
    IF __errcode = 7041 THEN 
     // Do something else 
     select 'file does not exist' from system.iota; 

    ELSE 
     // re-raise the other exception 
     RAISE; 

    END IF; 
END TRY; 
0

Delphiコード:

function TableExists(AConnection: TADOConnection; const TableName: string): boolean; 
var 
R: _Recordset; 
begin 
if AConnection.Connected then 
try 
    R := AConnection.Execute('Select case when OBJECT_ID(''' + TableName + ''',''U'') > 0 then 1 else 0 end as [Result]', cmdText, []); 
    if R.RecordCount > 0 then 
    Result := (R.Fields.Items['Result'].Value = 1); 

except on E:exception do Result := false; 
end; 

TADOConnectionの

端を既存のこの単純な機能の使用。

関連する問題