- - PR -
CREATE TABLEをする前のテーブル存在チェック
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-03-06 23:16
CREATE TABLEをする前に既にそのテーブルが存在する場合に
DROP TABLEをしたいのですが、 if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[テーブル名]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) DROP TABLE [dbo].[テーブル名] ストアドの中でテーブル名を変数(@TableName)で持たせているのですが こういう場合はどのように書いたらよいですか? ちなみに、単純に[dbo].[テーブル名]を@TableNameに置き換えてみましたが エラーになりました。。 | ||||
|
投稿日時: 2007-03-06 23:25
SQLServerでしょうか?
どういうエラーが返ってきますか?DROPまで出来れば「CREATE TABLE @TableName」は問題ないんですよね? #なんだか「?」だらけで申し訳ないです | ||||
|
投稿日時: 2007-03-06 23:31
書き込みありがとうございます。
SQLServer2000です。 if exists (select * from dbo.sysobjects where id = object_id(N@TableName) and OBJECTPROPERTY(id, N'IsUserTable') = 1) SET @Sql = 'DROP TABLE ' + @TableName EXEC(@Sql) という風に書きました。 (変数の場合、単純に DROP TABLE @TableName とはできないようです) エラーは「@TableNameがありません(変数を指定してください、のような)」 はっきり覚えていないので、明日また実際にやってみてエラー内容を 書き込みたいと思います。 If〜を書かずに、直接、上のDROP TABLEを書くと処理は実行されていました。 [ メッセージ編集済み 編集者: chie0925 編集日時 2007-03-06 23:33 ] | ||||
|
投稿日時: 2007-03-06 23:46
うーん・・MSSQLのストアドは(も)不知ですが
SET @Sql = 'if exists (select * from dbo.sysobjects where id = object_id(N' + @TableName + ') and OBJECTPROPERTY(id, N'IsUserTable') = 1) ' + 'DROP TABLE ' + @TableName EXEC(@Sql) などとは書けないんですかねぇ(汗 | ||||
|
投稿日時: 2007-03-07 09:09
おはようございます。 今朝、デスクに向かってすぐに上記の方法で試してみました。 できました!!! 本当にありがとうございました。 |
1