此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