此sql語句不起作用。 EXEC(@strSql)後,我看到0或1作爲結果,所以我繼續使用IF語句,但它不像我預期的那樣工作。它不會從IF聲明中採取行動。 此外,有沒有辦法使查詢動態,所以我可以檢查多個表?Sql服務器:如何從sql字符串中獲取值
Declare @strSql varchar(1000),
@TableName varchar(100),
@linkedServer varchar(100)
Set @TableName='tablename'
Set @linkedServer='linkservername'
Set @strSql='Select count(1) as TabExists FROM DBC.TABLES WHERE
TABLEKIND=''T'' AND DATABASENAME=''databasename'' AND
TABLENAME=''tablename'''
SET @strSql = N'select TabExists from OPENQUERY('[email protected]+', ''' + REPLACE(@strSql, '''', '''''') + ''')'
EXEC (@strSql)
IF @strSql = '0' --table not exist
create table
IF @strSql = '1' --table exist
delete data from table
我看不出你如何能指望'IF'不同的工作,您要指派給'@ strSql'這裏的值:'SET @strSql = N 'select TabExists ....',然後你正在執行'IF @strSql ='0'......如果@ strSql ='1''當@ strSql'它顯然不是0也不是1 – Lamak
爲什麼是你用這種奇怪的方式檢查表的存在? – ElenaDBA
有沒有更好的方法來檢查?我檢查的表在teradata環境中,我必須使用鏈接服務器。 – angelcake