我绝不是 DBA,我正在尝试编写我认为的简单存储过程。我传入了一些值为 0 或 1 的参数,这取决于我想要创建一个临时表然后将数据转储出来的那个参数值。基本上,我的代码如下;
ALTER PROCEDURE [dbo].[cfn_ReportP360_Calendar_MV_and_Performance]
@IUID int = NULL
, @USERTYPE varchar(1) = 'R'
, @RepID varchar(20) = null -- this can be vchplanid or vchhhplanid depENDs ON the @reporttype
, @iWorkListID int = 0 -- this is the P360 Group id
, @Reporttype varchar(1) = 'A' -- 'A' = acct by acct, 'H' = Household
, @debug tinyint = 0
, @showdata tinyint = 1 -- 1 = show data, 0 = show year
AS
SET NOCOUNT ON
IF OBJECT_ID('tempdb.dbo.#tempFinal') IS NOT NULL
DROP TABLE dbo.#tempFinal
IF @showdata = 0
Begin
CREATE table dbo.#tempFinal(
YEAR1PERF text,
YEAR2PERF text,
YEAR3PERF text,
YEAR4PERF text,
YEAR5PERF text,
YEAR6PERF text)
INSERT into dbo.#tempFinal
SELECT CONVERT(VARCHAR(8), GETDATE(), 1), '12/31/2012', '12/31/2011', '12/31/2010', '12/31/2009', '12/31/2008'
END
IF @showdata = 1
BEGIN
CREATE table dbo.#tempFinal(
HHLEVEL_INDICATOR text,
IPPSACCOUNTID text,
ICFNACCOUNTID text,
VCHACCOUNTNUMBER text,
VCHACCOUNTNAME text,
VCHPLANID text,
IHHID text,
VCHHHNAME text,
YEAR1PERF text,
YEAR2PERF text,
YEAR3PERF text,
YEAR4PERF text,
YEAR5PERF text,
YEAR6PERF text)
Insert into dbo.#tempFinal
SELECT
HHLEVEL_INDICATOR,IPPSACCOUNTID,ICFNACCOUNTID,VCHACCOUNTNUMBER,VCHACCOUNTNAME,VCHPLANID,IHHID,VCHHHNAME,YEAR1PERF,YEAR2PERF,YEAR3PERF,YEAR4PERF,YEAR5PERF,YEAR6PERF
from dbo.tbl_cfn_Calendar_Performance
END
SELECT * from dbo.#tempFinal
IF OBJECT_ID('tempdb.dbo.#tempFinal') IS NOT NULL
DROP TABLE dbo.#tempFinal
我觉得这应该很好,但是每次我尝试运行它时都会出错;消息 2714,级别 16,状态 1,过程 cfn_ReportP360_Calendar_MV_and_Performance,第 47 行
数据库中已经有一个名为“#tempFinal”的对象。
除了第 47 行,根本没有引用该临时表,这可能是因为注释被忽略了,我在粘贴的代码上方有一大堆注释,但我没有检查表并将其放在结束SPROC消除了吗?我不知道该去哪里,任何帮助都会很棒。提前谢谢你,尼克