SQL Serverでは、テーブルが存在するかどうかを確認するためにSQLを記述できます。どのようにADSのためにそれを行うことができますか?テーブルが存在するかどうかを検出する
私はテーブルが他にこれこれを行う存在するかどうかを言うためにいくつかのDelphiのコードを記述する必要があります...
SQL Serverでは、テーブルが存在するかどうかを確認するためにSQLを記述できます。どのようにADSのためにそれを行うことができますか?テーブルが存在するかどうかを検出する
私はテーブルが他にこれこれを行う存在するかどうかを言うためにいくつかのDelphiのコードを記述する必要があります...
システム・プロシージャsp_GetTablesはにあなたが接続されているディレクトリに存在するどのようなテーブルを伝えることができます:
をPROCEDURE sp_GetTables(NULL、NULL、NULL、 'TABLE')
に非SQLソリューションをEXECUTEだろうAdsCheckExistence APIを使用してください。
私はADSのユーザーではないので、私は詳細にお答えすることはできません。
はThe'reがsystem.tablesは、テーブルに関する情報を表示しているhttp://devzone.advantagedatabase.com/dz/webhelp/Advantage10.1/index.html
を参照してください。 テーブルをチェックするSQLクエリを書くこともできると思います。
ありがとうございました。ちょうど見ていた、それはsystem.tablesが私が持っていないデータ辞書の一部であるようだ。 – Jon
私はピーターの答えが好きですが、あなたが何をする必要があるかによって、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;
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の
端を既存のこの単純な機能の使用。
ありがとう!あなたは0/1か 'TRUE/FALSE'を返すことができるなら、どんな考えですか?あなたがそうのような手順を選択することができADSの10.xでは – Jon
:TABLE_NAME =(PROCEDUREのsp_GetTablesをEXECUTE(NULL、NULL、NULL、 'テーブル'))Aから SELECT * 'TEST.ADT' 私は考え結果レコードの数をチェックするだけです.1はTRUEです。0はFALSEです。 –
テーブル名をsp_GetTablesに渡すほうが簡単です。 実行手順sp_GetTables(NULL、NULL、 'TEST.ADT'、 'TABLE') –