gpt4 book ai didi

sql-server - 不是从动态查询执行创建的临时表

转载 作者:行者123 更新时间:2023-12-02 08:15:39 24 4
gpt4 key购买 nike

如果我运行这个动态查询:

declare @test nvarchar(1000) = 'select * into #tmp7 from bauser'
execute(@test)

然后尝试使用以下方法查询#tmp7:

select * from #tmp7

抛出错误:

Invalid object name '#tmp7'.

但是,如果我手动运行相同的查询:

select * into #tmp7 from bauser

一切正常。临时表已创建并填充了结果。

为什么它不适用于动态查询执行?

最佳答案

范围!

临时表只存在于动态执行查询的范围内如果你确实想让选择把它放在动态查询中

declare @test nvarchar(1000) = 'select * into #tmp7 from bauser

select * from #tmp7'
execute(@test)

你也可以使用这个检查是否存在这样的对象

select * from sys.sysobjects so where so.name like '%tmp7%'

看到这个类似的问题 SQL Server 2005 and temporary table scope

编辑

临时表是一个表,所以是的,你可以添加列、索引等。这些表实际上驻留在 TempDB 数据库中,你甚至可以“找到”它们(它们可以用奇怪的长名称看到)但它们是在您的 EXEC 执行后销毁。

也许您的问题是尝试动态方法或者与您的问题根本无关。尝试发布一个新问题,您得到了什么以及您需要做什么才能获得进一步的帮助。

关于sql-server - 不是从动态查询执行创建的临时表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42281100/

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