gpt4 book ai didi

sql - 选择不存在的列失败

转载 作者:行者123 更新时间:2023-12-02 00:44:19 24 4
gpt4 key购买 nike

使用 SQL Server 2005 执行以下语句(我的测试是通过 SSMS)导致第一次执行成功,后续执行失败。

 IF OBJECT_ID('tempdb..#test') IS NULL 
CREATE TABLE #test ( GoodColumn INT )
IF 1 = 0
SELECT BadColumn
FROM #test

这意味着有些东西正在将我在 select 语句中访问的列与脚本“编译”时存在于表中的列进行比较。出于我的目的,这是不受欢迎的功能。我的问题是是否可以做任何事情来使这段代码在每次运行时都能成功执行,或者如果这不可能,也许有人可以解释为什么所展示的功能是可取的。我目前唯一的解决方案是用 EXEC 或 select * 包装 select,但我不喜欢这两种解决方案。

谢谢

最佳答案

如果你输入:

IF OBJECT_ID('tempdb..#test') IS NOT NULL 
DROP TABLE #test
GO

一开始,问题就会消失,因为批处理会在 #test 表存在之前被解析。

您要让系统识别“1=0”的计算结果始终为假。如果它曾经是真的(对于大多数现实生活条件可能都是这种情况),那么您可能想知道您将要运行会导致失败的东西。

如果您删除临时表,然后创建一个执行相同操作的存储过程:

CREATE PROC dbo.test 
AS
BEGIN
IF OBJECT_ID('tempdb..#test') IS NULL
CREATE TABLE #test ( GoodColumn INT )

IF 1 = 0
SELECT BadColumn
FROM #test
END

然后这将愉快地被创建,你可以运行任意多次。

罗布

关于sql - 选择不存在的列失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1350572/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com