テンポラリ・テーブルが存在するかどうかを確認

2714 ワード

sql serverテンポラリ・テーブルが存在するかどうかを確認
  if   object_id('tempdb..##TEMPTABLE1')   is   not   null      drop   table   ##TEMPTABLE1    
          ,##TEMPTABLE1   view procedure   ,
         
if   exists   (select   *   from   tempdb.dbo.sysobjects   where   id   =   object_id(N'tempdb..##TEMPTABLE1')   and   type='U')     drop   table   ##TEMPTABLE1 
 
  
          

使用中にselect intoテンポラリ・テーブルを発見するのは面倒です.以下は使用中に発見された注意事項です(mssqlserverを例に挙げてください).
1、一般使用
create table person (id int ,name varchar(20),birthday datetime)
テンポラリ・テーブルへのデータの読み込みselect*into#tb_tmp from person where ....テンポラリ・テーブルのデータselect name from#tb_を使用するtmp where id=1使用後、テンポラリ・テーブル(drop table#tb_tmp)を削除することを忘れないでください.そうしないと、次の使用時にエラーが表示されます.メッセージ2714、レベル16、ステータス6、1行目There is already an object named'#tb_tmp' in the database.
2,よくある質問select'as col into#tb_tmpは、メッセージ2731、レベル16、ステータス1、2行目のColumn'col'has invalid width:0をパケットする.
以上の問題を解決するには、2つの方法があります.1つは、'->null select null as col into#tb_tmpソリューション2,'->ltrim(')or'->rtrim('')select rtrim(')as col into#tb_tmp
解決策1で発生した問題:挿入問題:int数字または数値クラス文字列(小数点以下の数字を挿入すると小数点が自動的に除去される)のみを挿入できます.数値以外の文字列を挿入すると、insert into#tb_tmp values('asdfsadf')は、メッセージ245、レベル16、ステータス1、3行目Syntax error converting the varchar value'asdfsadf'to a column of data type intというエラーを報告する.
解決策2に起因する問題:挿入問題:「('スペース数')」で指定するスペース数の範囲内の数の文字列しか挿入できない.文字列の数が括弧で指定するスペース数より大きい場合、メッセージ8152、レベル16、ステータス9、2行目のString or binary data would be truncated.The statement has been terminated.
まとめ:select intoによる問題はうまく解決できないので、テンポラリ・テーブルを使用する前にテンポラリ・テーブルの完全な構造を定義し、列を定義するときに(COLLATE)を加えることをお勧めします.
DATABASE_DEFAULT)のプロパティです.そうしないと、一部のシステムで中国語を使用すると文字化けしてしまいます.
 
本文はCSDNブログから来て、転載して出典を明記してください:http://blog.csdn.net/xddouble/archive/2007/10/11/1819606.aspx