私は決して 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の終わりはそれを排除しますか? どこに行けばいいのかわからないので、何か助けていただければ幸いです。前もってありがとう、NickG