首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Server存储过程创建临时表和插入值

Server存储过程创建临时表和插入值
EN

Stack Overflow用户
提问于 2013-01-15 08:52:04
回答 1查看 129.4K关注 0票数 8

我试图从不同的表中选择值,并将其嵌入到临时表中。

我需要临时表中的身份字段。当我尝试执行以下代码时,它会抛出一个错误:

*Msg 2714,第16级,状态1,过程SelectCashDetails,第27行 数据库中已经有一个名为“#ivmy_cash_temp1”的对象。

我尝试将temp表更改为不同的名称,即使它引发了相同的错误。

这是我的密码:

代码语言:javascript
复制
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
EN

Stack Overflow用户

回答已采纳

发布于 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()只使用这个语法。

票数 8
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14334061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档