2

SQL Server では、SQL を記述してテーブルが存在するかどうかを確認できます。ADSでそれを行うにはどうすればよいですか?

テーブルが存在するかどうかを伝えるために、いくつかの Delphi コードを記述する必要があります。

4

4 に答える 4

4

システム プロシージャsp_GetTablesを使用すると、接続先のディレクトリに存在するテーブルを確認できます。

EXECUTE PROCEDURE sp_GetTables( NULL, NULL, NULL, 'TABLE' )

SQL 以外のソリューションは、AdsCheckExistence API を使用することです。

于 2011-07-08T14:14:31.240 に答える
1

私は ADS ユーザーではないので、詳しくはお答えできません。

http://devzone.advantagedatabase.com/dz/webhelp/Advantage10.1/index.htmlを参照してください。

これは、テーブルに関する情報を含む system.tables ビューです。テーブルをチェックするSQLクエリを書くこともできると思います。

于 2011-07-08T13:21:51.300 に答える
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を使用します

終わり;

于 2011-08-10T05:37:27.800 に答える
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;
于 2011-07-09T06:55:02.797 に答える