Sql server T-SQL无法测试表是否存在

Sql server T-SQL无法测试表是否存在,sql-server,tsql,Sql Server,Tsql,DB:SQLServer2008 我有以下疑问: DECLARE @VAR FLOAT; IF (EXISTS (SELECT * FROM db.INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'sqlt_table_1')) BEGIN @VAR = (SELECT 1.0 FROM db.schema.sqlt_table_1); END; SELECT @VAR; 如果我有表sqlt\u table\u 1,

DB:SQLServer2008

我有以下疑问:

DECLARE @VAR FLOAT;

IF (EXISTS (SELECT * FROM db.INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'sqlt_table_1'))
    BEGIN
        @VAR = (SELECT 1.0 FROM db.schema.sqlt_table_1);
    END;

SELECT @VAR;
如果我有表sqlt\u table\u 1,我将执行查询。 如果从SQL编辑器(如DBeaver)执行此查询,则该查询可以工作。但是,如果使用Microsoft SQL JDBC Driver 4.0兼容驱动程序从SCADA软件执行此查询,则会出现以下错误:

由SQLServerException引起:无效的对象名称“db.schema.sqlt\u table\u 1”

为什么会出现这个错误

如何使此SQL查询在SCADA中工作


这是因为当对象db.schema.sqlt_table_1不存在时,语句失败。不管语句是否运行,批处理必须仍然有效

语句@VAR=SELECT 1.0 FROM db.schema.sqlt_table_1;但这甚至是无效的。你最好这样做:

使用数据库; 去 存在时选择案例从信息_SCHEMA.TABLES中选择1,其中TABLE_NAME=N'sqlt_TABLE_1'和SCHEMA_NAME=N'SCHEMA',然后选择1结束;
这是因为当对象db.schema.sqlt_table_1不存在时,语句失败。不管语句是否运行,批处理必须仍然有效

语句@VAR=SELECT 1.0 FROM db.schema.sqlt_table_1;但这甚至是无效的。你最好这样做:

使用数据库; 去 存在时选择案例从信息_SCHEMA.TABLES中选择1,其中TABLE_NAME=N'sqlt_TABLE_1'和SCHEMA_NAME=N'SCHEMA',然后选择1结束;
FYI SQL Server 2008已经完全不受支持一年多了;您应该尽快查看升级路径。仅供参考,SQL Server 2008已经完全不受支持一年多了;您应该尽快查看升级路径。