2017-03-09 50 views
0

我想在SQL Server 2012中创建一个返回临时表的存储过程。如何使用存储过程创建TEMP表

我的代码是

CREATE PROC [dbo].[aac_trial_balance_data] 
    @company_code char(5), 
    @target_level int, 
    @StartDate char(12), 
    @EndDate char(12) 
AS 
BEGIN 
    SELECT 
     dbo.getParentCode(chart_code,@target_level,LEVEL) chart_code, 
     level, 
     SUM(debit) debit, 
     SUM(credit) credit 
    FROM 
     acc_trial_balance_vw 
    WHERE 
     convert(datetime, create_date, 103) between convert(datetime, cast(@StartDate as datetime), 103) 
               and convert(datetime, cast(@EndDate as datetime) + '23:59:59', 103) 
     AND company_code = @company_code 
    GROUP BY 
     chart_code, LEVEL 
END 

我要像

CREATE PROC [dbo].[aac_trial_balance_data] 
    @company_code char(5), 
    @target_level int, 
    @StartDate char(12), 
    @EndDate char(12) 
AS 
BEGIN 
    (select 
      dbo.getParentCode(chart_code,@target_level,LEVEL) chart_code, 
      level, 
      SUM(debit) debit, 
      SUM(credit) credit 
     from acc_trial_balance_vw 
     where 
     convert(datetime,create_date,103) between convert(datetime, cast(@StartDate as datetime) , 103) 
     and convert(datetime, cast(@EndDate as datetime)+'23:59:59' , 103) 
     and company_code = @company_code 
     GROUP BY chart_code, LEVEL 
     ) 
     AS 
     #TEMP-TABLE -- This is my Temp Table That i want to create 
END 

查询后创建临时表ID怎么办呢

回答

1

您可以创建临时表,只需使用

If Object_Id('Tempdb..#temp') Is Not Null 
Drop Table #temp1 
create table #temp(your columns) 

Insert into #temp select... 

或将select into #TEMP像

select 
     dbo.getParentCode(chart_code,@target_level,LEVEL) chart_code, 
     level, 
     SUM(debit) debit, 
     SUM(credit) credit into #tempTable 
    from acc_trial_balance_vw 
    where 
    convert(datetime,create_date,103) between convert(datetime, cast(@StartDate as datetime) , 103) 
    and convert(datetime, cast(@EndDate as datetime)+'23:59:59' , 103) 
    and company_code = @company_code 
    GROUP BY chart_code, LEVEL 
0

试试这个:

(select 
dbo.getParentCode(chart_code,@target_level,LEVEL) chart_code, 
level, 
SUM(debit) debit, 
SUM(credit) credit 

INTO #THIS_TEMP_TABLE 

from acc_trial_balance_vw 
where 
convert(datetime,create_date,103) between convert(datetime, cast(@StartDate as datetime) , 103) 
and convert(datetime, cast(@EndDate as datetime)+'23:59:59' , 103) 
and company_code = @company_code 
GROUP BY chart_code, LEVEL) 

SELECT * FROM #THIS_TEMP_TABLE 
Drop table #THIS_TEMP_TABLE 
+0

每次插入后into #temptable运行查询,将清洁您的分贝。 –

0

试试你的dbnamefrom acc_trial_balance_vw

CREATE PROC [dbo].[aac_trial_balance_data] 
@company_code char(5), 
@target_level int, 
@StartDate char(12), 
@EndDate char(12) 
AS 
BEGIN 
    (select 
     dbo.getParentCode(chart_code,@target_level,LEVEL) chart_code, 
     level, 
     SUM(debit) debit, 
     SUM(credit) credit 
    into #TEMPTABLE -->>> Inserting here 
    from acc_trial_balance_vw 

    where 
    convert(datetime,create_date,103) between convert(datetime, cast(@StartDate as datetime) , 103) 
    and convert(datetime, cast(@EndDate as datetime)+'23:59:59' , 103) 
    and company_code = @company_code 
    GROUP BY chart_code, LEVEL 
    ) 
    AS 

END 
0
create table #temp(company_code char(5),target_level int,StartDate char(12)) 
insert into #temp('','','') 
select * from #temp