我正在尝试创建一个依赖于scenario参数值的临时表,并使用以下IF语句,但得到以下错误:
IF @indexName = 'A'
begin select top 400 * into #temp from #pretemp order by EMRev desc end
ELSE IF @indexName = 'B'
begin select top 75 * into #temp from #pretemp order by EMRev desc end
ELSE IF @indexName = 'C'
begin select top 300 * into #temp from #pretemp order by EMRev desc end
ELSE
begin select top 100 * into #temp from #pretemp order by EMRev desc end
Run Code Online (Sandbox Code Playgroud)
消息2714,级别16,状态1,行179数据库中已存在名为"#temp"的对象.消息2714,级别16,状态1,行181数据库中已存在名为"#temp"的对象.消息2714,级别16,状态1,行183数据库中已存在名为"#temp"的对象.
我确定IF语句基于@indexName变量工作(用简单的东西替换block语句(例如,'select @indexName'),程序运行正常).
有关导致此错误的原因的任何想法?
Alter Procedure sp_Member(
@comcode int = 0,
@SubComCode int = 0
)
as begin
set nocount on
If @comcode='0'
begin
select (
select sum(amount)
from tbcoudet
where memcode=tbm.memcode and
expyear=(select max(expyear) from tbexpyear)
and exists (
select itemcode
from tbitem
where comcode=@comcode and
SubComCode=@SubComCode and
itemcode=tbcoudet.itemcode
)
group by memcode,expyear
)'TurnOver', *
into #result from tbmember tbm where can_flag='N'
end
If @subcomcode='0'
begin
select (
select sum(amount)
from tbcoudet
where memcode=tbm.memcode and expyear=(select max(expyear) from tbexpyear)
and exists (
select …Run Code Online (Sandbox Code Playgroud) 请看下面的代码:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE Test
AS
BEGIN
begin
select * into #dbreviews from dbreviews
end
drop table #dbreviews
begin
select * into #dbreviews from dbreviews
end
END
GO
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
'#dbreviews'数据库中已经有一个命名的对象。
像这样的问题:数据库中已经有一个名为“#columntable”的对象告诉我这应该是可能的。