我试图从不同的表中选择值,并将其嵌入到临时表中。
我需要临时表中的身份字段。当我尝试执行以下代码时,它会抛出一个错误:
*Msg 2714,第16级,状态1,过程SelectCashDetails,第27行 数据库中已经有一个名为“#ivmy_cash_temp1”的对象。
我尝试将temp表更改为不同的名称,即使它引发了相同的错误。
这是我的密码:
ALTER PROCEDURE [dbo].[SelectCashDetails]
(
@trustcompanyid BigInt,
@trustaccountid BigInt,
@planid BigInt,
@fromdate varchar(20),
@todate varchar(20),
@movetype varchar(20),
@typedesc varchar(20)
)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
CREATE TABLE #ivmy_cash_temp1
( tmovedate datetime,
tmovedesc varchar(20),
tmoneymovetype varchar(20),
tplanbal decimal(18,6),
tsourcetype BigInt,
tdestinationtype BigInt)
SELECT
IDENTITY(int) AS id,
CMM.movedate,
CDCP.paramdesc,
CMM.movementtypecd,
CMM.amountmoved,
CMM.planbalance,
cmm.sourceaccounttypeid,
cmm.destinationaccounttypeid
into #ivmy_cash_temp1
from
cash_moneymove CMM
inner join
CDC_PARAMETERS CDCP on CMM.movedescriptioncd=CDCP.paramcd
where
CMM.movedescriptioncd = @typedesc
and PARAMNAME = 'Cash AccountType Desc'
select * from #ivmy_cash_temp1
END发布于 2013-01-15 08:56:46
SELECT INTO语句为您创建表。不需要预先处理CREATE TABLE语句。
所发生的事情是在您的#ivmy_cash_temp1语句中创建CREATE,然后DB尝试在您执行SELECT INTO时为您创建它。这将导致一个错误,因为它正在尝试创建您已经创建的表。
要么消除CREATE TABLE语句,要么修改填充它的查询以使用INSERT INTO SELECT格式。
如果您需要添加到新行的唯一ID,那么最好使用SELECT INTO.因为IDENTITY()只使用这个语法。
https://stackoverflow.com/questions/14334061
复制相似问题