gpt4 book ai didi

sql - 重复创建和删除同名的临时表

转载 作者:行者123 更新时间:2023-12-02 01:42:29 24 4
gpt4 key购买 nike

我明白调试器在做什么,但我不太同意,因为下面的代码肯定可以工作:

IF OBJECT_ID('TEMPDB..#extract') IS NOT NULL DROP TABLE #extract;
CREATE TABLE #extract(
x VARCHAR(100),
NumX_Rank NUMERIC(18,2),
NumG_Rank NUMERIC(18,2)
);

IF OBJECT_ID('TEMPDB..#extract') IS NOT NULL DROP TABLE #extract;
CREATE TABLE #extract(
x VARCHAR(100),
NumX_Rank NUMERIC(18,2),
NumG_Rank NUMERIC(18,2)
);

错误信息如下:

Msg 2714, Level 16, State 1, Line 15 There is already an object named '#extract' in the database.

请注意 - 我在整个脚本中声明了我需要的变量,即脚本是存储过程的一部分,变量应该在整个过程中都有一个范围。

最佳答案

只需使用Go语句,保证当前批量执行范围

:setvar TotalScope 10
IF OBJECT_ID('tempdb..#extract') IS NOT NULL

DROP TABLE #extract;
CREATE TABLE #extract(
x VARCHAR(100),
NumX_Rank NUMERIC(18,2),
NumG_Rank NUMERIC(18,2)
);


//what ever Operation what you want to Perform on `#extract`

GO


// So here `#extract` is not available then You can Create New One Now
select $(TotalScope)


IF OBJECT_ID('tempdb..#extract') IS NOT NULL

DROP TABLE #extract;
CREATE TABLE #extract(
x VARCHAR(100),
NumX_Rank NUMERIC(18,2),
NumG_Rank NUMERIC(18,2)
);


// Again Do what ever Operation what you want to Perform on `#extract`


GO

// So here `#extract` is not available then You can Create New One Now

编辑

你不能在批处理执行之间使用这种类型的@TotalScope变量但是你需要打开SQL CMD MODE 然后你可以使用我更新的上面的代码

For Reference

注意:如 alroc 所建议,与其创建新表一不如截断表更好

关于sql - 重复创建和删除同名的临时表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27705084/

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