2013-10-02 7 views
6

私はdb Aとdb Bを持っています。ストアドプロシージャの開始時に、B.mytableからB.mytablebackupにすべての行をバックアップしたいと思います。残りのストアドプロシージャは、データベースAのテーブル(データを収集してB.mytableに書き込みます)に対して実行されます。別のSQLデータベースからテーブルの存在を確認するには?

だから私はB.mytablebackup

IF EXISTS(SELECT 1 FROM B.dbo.mytablebackup) 

が存在するかどうかを確認し、それがない場合は、それはそれは

SELECT * INTO B..mytablebackup from B..mytable 
ない存在しない場合は、ストアドプロシージャが

INSERT INTO B..mytablebackup SELECT * FROM B..mytable 

を行います

しかし、ストアドプロシージャを実行するとエラーが発生します

私はPrintの文と実行はIFの枝を「存在しない」を取っている追加されたデータベース

に「mytablebackup」という名前のオブジェクトがすでに存在しています。

私は間違っていますか?

+1

*** SQL ***は、多くのデータベースシステムで使用される言語ですが、データベース製品ではありません。多くのものはベンダー固有のものです。どのような**データベースシステム**(およびどのバージョン)を使用していますか(それに応じてタグを更新してください).... –

+1

@marc_s 'db.schema.tbl'フォーマットに基づくMSSQLだと思います。 – Kermit

+2

' IF EXISTS (SELECT 1 FROM B.dbo.mytablebackup) '' mytablebackup'の中に少なくとも1行*があるかどうかを調べます。テーブル自体が存在するかどうかはわかりません*(テーブルが存在しない場合、コンパイルエラーが発生します) –

答えて

10

SQL Serverの場合、システムビューsys.tablesを使用してテーブルが存在するかどうかを確認する必要があります。

IF EXISTS(SELECT 1 FROM B.sys.tables WHERE name = 'mytablebackup') 
+0

ありがとう、エリック。それがトリックでした。 – DeveloperM