Sql 如何在存储过程中删除临时表
我正在使用SQL Server 2016 Service Pack 2并使用以下代码。它在SQL查询语句中正确执行:Sql 如何在存储过程中删除临时表,sql,sql-server,stored-procedures,temp-tables,Sql,Sql Server,Stored Procedures,Temp Tables,我正在使用SQL Server 2016 Service Pack 2并使用以下代码。它在SQL查询语句中正确执行: SELECT 'a' AS one INTO #deleted; DROP TABLE IF EXISTS #deleted; GO SELECT 'b' AS two INTO #deleted; DROP TABLE IF EXISTS #deleted; GO 但当我拿起围棋时,我面临着这个错误: 数据库中已存在名为“已删除”的对象 如果要使用此语法创建SP,则无法使用
SELECT 'a' AS one INTO #deleted;
DROP TABLE IF EXISTS #deleted;
GO
SELECT 'b' AS two INTO #deleted;
DROP TABLE IF EXISTS #deleted;
GO
但当我拿起围棋时,我面临着这个错误:
数据库中已存在名为“已删除”的对象
如果要使用此语法创建SP,则无法使用GO。正确。如果要在同一批中使用SELECT INTO语句(中间有DIE语句),则必须为这两个临时表指定不同的名称 或者,您可以先创建临时表,其中包含两个SELECT语句所需的所有列,然后相应地调整SELECTs语句或使用临时表数据运行的任何语句 例如 开始 删除表(如果存在); 创建表删除[1]VARCHAR5 NULL,[2]VARCHAR5 NULL; 插入已删除的[一] 选择“a”作为[一]; 插入已删除的[两] 选择“b”作为[两个]; 从删除中选择[1],其中[2]为空; 从删除中选择[2],其中[1]为空; 删除表(如果存在); 终止 去 更新1 如前所述,您可以为临时表指定不同的名称 例如 开始 选择“a”作为[一个] 进入删除1; 从deleted1中选择*或者任何你需要执行的语句 删除表格(如果存在)删除1; 选择“b”作为[两个] 进入删除2; 从deleted2中选择*或者任何你需要执行的语句 删除表格(如果存在); 终止 去
谢谢你的回复;我的列数非常多,您的方法对我来说效率不高。难道没有更简单的方法吗?我需要知道如何删除存储过程中的每个批?最好不要无缘无故地盲目应用模式。为什么在您的过程中需要使用临时表?为这一决定辩护。为什么要使用惰性的表创建形式?由于编码风格的原因,似乎更像是一个自作自受的问题。