Как удалить и воссоздать временную таблицу в цикле в процедуре, если возникает проблема, что мы должны делать? - PullRequest
0 голосов
/ 24 мая 2019

Я много рассказываю о проблеме, которая возникла в одном из моих сеансов: «создайте одну временную таблицу, после чего создайте цикл в этом цикле, удалите временную таблицу, которую мы создали, и воссоздайте эту», если мы этого не сделаемсоздать временную таблицу перед циклом, мы можем получить вывод как «Команда (ы) успешно выполнена».но если мы создадим это, он показывает ошибку.Скажите, пожалуйста, ответ на вопрос «Как удалить и заново создать временную таблицу в цикле, которая уже создана вне цикла»

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 голосов
/ 24 мая 2019

Приведенный ниже способ проверки временной таблицы и удаления будет работать в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...