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