1

我绝不是 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消除了吗?我不知道该去哪里,任何帮助都会很棒。提前谢谢你,尼克

4

2 回答 2

3

首先,这里我认为不需要创建临时表,您可以直接运行您的 select 语句并获取结果。我不确定您是否正在对临时表中的数据执行任何操作,否则您就不需要它们。

于 2013-09-04T15:10:55.570 回答
1

转变

IF OBJECT_ID('tempdb.dbo.#tempFinal') IS NOT NULL

IF OBJECT_ID('tempdb..dbo.#tempFinal') IS NOT NULL
于 2013-09-04T15:02:09.030 回答