【发布时间】:2013-09-04 14:57:38
【问题描述】:
我绝不是 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 行,根本没有引用该临时表,这可能是因为 cmets 被忽略了,我在粘贴的代码上方有一大堆 cmets,但我没有检查表并删除它在SPROC的末尾消除它吗?我不知道该去哪里,任何帮助都会很棒。 先感谢您, 尼克G
【问题讨论】:
-
首先,这里我觉得不需要创建临时表,你可以直接运行你的select语句并得到结果。我不确定您是否正在对临时表中的数据执行任何操作,否则您不需要它们。
-
你说得对,我开始采用这种方法是因为我最初想基本上将结果集组合到一个临时表中,但重新考虑并认为使用条件会有所帮助,这当然可以,现在消除了需要临时表!非常感谢你!如果您想编辑我的帖子或提交答案,我很乐意标记它!再次感谢!
-
我已经提交了答案:)
标签: sql sql-server stored-procedures parameters temp-tables