如果发生问题,如何在过程中循环删除和重新创建临时表,我们该怎么办?

时间:2019-05-24 12:53:00

标签: sql-server

我在很多会议中都遇到了很多问题 在创建循环后创建一个临时表 在该循环中,删除我们创建并重新创建的临时表” 如果我们不在循环之前创建临时表,我们可以将输出作为 “命令已成功完成。”但是,如果我们创建一个,则会显示错误。 请告诉我“如何在循环外创建并循环创建临时表”的答案

create proc newp
as
begin
declare @a int 
set @a=5
create table #temp(a int)

while @a >=0
begin

drop table if exists #temp
create table #temp(a int)

set @a = @a-1

end

end

命令成功完成。

1 个答案:

答案 0 :(得分:0)

以下检查临时表和删除的方法将在SQL Server中起作用。

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

因此您的存储过程将是:

CREATE PROCEDURE newp
AS
BEGIN
    DECLARE @a INT
    SET @a = 5

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

    CREATE TABLE #temp (a INT)

    WHILE @a >= 0
    BEGIN
        -- IF OBJECT_ID('tempdb..#temp') IS NOT NULL DROP TABLE #temp
        -- CREATE TABLE #temp (a INT)

        INSERT INTO #temp (a) VALUES (@a)

        SET @a = @a - 1

        TRUNCATE TABLE #temp
    END
END