怎么知道一视图是否已存在(在ms sqlserver中)(50分)

  • 主题发起人 主题发起人 hcx
  • 开始时间 开始时间
H

hcx

Unregistered / Unconfirmed
GUEST, unregistred user!
我想创建一视图。但比需先检查有没有存在同一名称的视图。我有以下语句创建时出错。
(message:'invalid use of keyword. token: if)
我是这样写的:(就是不知错在那里,还请大家帮一下忙?不燃就不能回家过年了‘)
......
sql.clear;
sql.add('if exists (select * from sysobjects where id = object_id('+'dbo.sdg_sqty'+') and sysstat & 0xf = 2)');
sql.add('drop view dbo.sdg_sqty');
ExecSQL;
.......
若有更好的方法请贴出。{上面的方法我是照sql server中的脚本写的}
还有d5中用query1怎么写导出表。
 
这样写试试——
var
s: String;
begin
s := 'sdg_sqty';
Query1.Close;
Query1.Sql.Text := 'select * from sysobjects where xtype=''V'' and name=''' + s + '''';
Query1.Open;
if not Query1.IsEmpty then begin
Query1.Close;
Query1.Sql.Text := 'drop view ' + s;
Query1.ExecSql;
end;
end;
 
function ViewExist(ViewName:String):Boolean;
begin
try
Query1.Close;
Query1.Sql.Text := 'select * from '+Viewname +' Where 1<>1 ';
Query1.Open;
result:=true;
except
result:=False;
end;
end;
 
IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS
WHERE TABLE_NAME = 'ViewName')
DROP VIEW ViewName
======
SQL.Add('IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS
WHERE TABLE_NAME = ' + QuotedStr('ViewName') + ') DROP VIEW JobStateView')

)
 
dq:
你这种方法是可以。不知用
sql.add('if exists (select * from sysobjects where id = object_id('+'dbo.sdg_sqty'+') and sysstat &amp; 0xf = 2)');
不行吗?
 
to hcx:这种方法我没见过,而且在Query Analyzer里执行报错了,所以我说不清楚:)
 
多人接受答案了。
 
后退
顶部