如何在sql server中使用2个临时表 [英] how to use 2 temp table in sql server

查看:242
本文介绍了如何在sql server中使用2个临时表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好..



i想在sql server 2008 r2中使用2个临时表..我得到错误..请给我corerct语法..



错误是:插入语句附近的语法不正确...错误在第二个插入语句中.. ex:

 插入 进入#tblagereoprt1 







我的存储过程是:

 USE [scjdata] 
GO
/ ******对象:StoredProcedure [ dbo]。[alldistt_wise]脚本日期:05/15/2014 10:58:59 ****** /
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo]。[alldistt_wise]

@Sex VARCHAR(250),
@DisabiltyType VARCHAR(250),
@SocialGroup VARCHAR (250),
@Minority VARCHAR(250),
@Age_start VARCHAR(250),
@Age_End VARCHAR(250)
AS
BEGIN
设置NOCOUNT ON;
DECLARE
@ChildTblName AS VARCHAR(125),
@FamilyTblName AS VARCHAR(125),
@vQuery AS VARCHAR(max),
@ vQuery1 as varchar(最大);




CREATE TABLE #tblagereoprt

disttname nvarchar(20)

);

CREATE TABLE#tblagereoprt1


totalpopulation nvarchar(20)
);


DECLARE @N varchar(3)
SET @N ='1'
WHILE(@N< = 27)
BEGIN
SET @ChildTblName ='['+ RIGHT(('0'+ @ N),2)+'Child_D'+'''
SET @FamilyTblName ='['+ RIGHT(('0'+ @N),2)+'Family_D'+'''



SET @vQuery ='从DIST中选择distname作为disttname,其中distt ='+ @ N +'' ;



SET @ vQuery1 ='select count(Child.cname)作为总人口从'+ @ChildTblName +'作为Child INNER JOIN'+ @FamilyTblName +'
AS Family ON Child.barcode = Family.barcode其中Child.distt ='+ @ N +''

IF(@Sex<>'')
BEGIN
SET @vQuery = @vQuery +'AND Child.sex ='''+ @Sex +''''
END
IF(@DisabiltyType<>'')
BEGIN
SET @vQuery = @vQuery +'AND Child.disability ='''+ @DisabiltyType +''''
END
IF(@Age_start<>''和@Age_End< ;>'')
BEGIN
SET @vQuery = @vQuery +'AND(Child.age介于'''+ @Age_start +'''和'''+ @Age_End +'''' )'
END

IF(@SocialGroup<>'')
BEGIN
SET @vQuery = @vQuery +'AND Family.social_grp ='' '+ @Social Group +''''
END
IF(@Minority<>'')
BEGIN
SET @vQuery = @vQuery +'AND Family.minority ='' '+ @Minority +''''
END;

插入#tblagereoprt
插入#tblagereoprt1

exec(@ vQuery1)
exec(@vQuery)

SET @N = @N +1
END
select * from #tblagereoprt
select * from#tblagereoprt1
drop table #tblagereoprt;
drop table#tblagereoprt1;


END

解决方案

尝试更改这些行



 插入 进入 #tblagereoprt 
插入 进入#tblagereoprt1

exec @ vQuery1
exec @ vQuery





to



 插入 进入 #tblagereoprt 
Exec @ vQuery

insert into #tblagereoprt1
exec @ vQuery1


hi all..

i want to use 2 temp table in sql server 2008 r2.. i m getting error.. please give me corerct syntax..

the error is: incorrect syntax near insert statement..the error is in second insert statement.. ex:

insert into #tblagereoprt1




my stored procedure is:

  USE [scjdata]
GO
/****** Object:  StoredProcedure [dbo].[alldistt_wise]    Script Date: 05/15/2014 10:58:59 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[alldistt_wise] 
	
    @Sex VARCHAR (250),
    @DisabiltyType VARCHAR (250),
    @SocialGroup  VARCHAR (250),
    @Minority VARCHAR (250),
    @Age_start VARCHAR (250),
    @Age_End VARCHAR (250)
AS
BEGIN	
	SET NOCOUNT ON;
	DECLARE
	@ChildTblName AS VARCHAR (125), 
	@FamilyTblName AS VARCHAR (125), 
    @vQuery AS VARCHAR (max), 
    @vQuery1 as varchar(max);
    
    
   
    
      CREATE TABLE #tblagereoprt
    ( 
       disttname nvarchar(20)
     
    );
    
        CREATE TABLE #tblagereoprt1
    ( 
    
       totalpopulation   nvarchar(20)  
    );
    
    
    DECLARE @N varchar(3)
    SET @N = '1' 
    WHILE (@N <= 27)
    BEGIN
    SET @ChildTblName = '[' + RIGHT(('0'+@N),2) + 'Child_D' + ']'
    SET @FamilyTblName = '[' + RIGHT(('0'+@N),2) + 'Family_D' + ']'
    
     
      
    SET @vQuery = 'select distname as disttname from DIST where distt='+@N+'';
    
   
    
    SET @vQuery1 = 'select count(Child.cname) as totalpopulation from ' + @ChildTblName + ' As Child  INNER JOIN ' + @FamilyTblName + ' 
      AS Family  ON Child.barcode=Family.barcode where Child.distt='+@N+'' 
     
    IF(@Sex <> '')
    BEGIN
        SET @vQuery = @vQuery + ' AND Child.sex = ''' + @Sex + ''''
    END  
    IF(@DisabiltyType <> '')
    BEGIN
        SET @vQuery = @vQuery + ' AND Child.disability = ''' + @DisabiltyType + ''''
    END 
    IF(@Age_start <> '' and @Age_End <> '')
    BEGIN
        SET @vQuery = @vQuery + ' AND (Child.age between ''' + @Age_start + ''' and ''' + @Age_End + ''')'
    END 
    
    IF(@SocialGroup <> '')
    BEGIN
        SET @vQuery = @vQuery + ' AND Family.social_grp = ''' + @SocialGroup + ''''
    END 
    IF(@Minority <> '')
    BEGIN
        SET @vQuery = @vQuery + ' AND Family.minority = ''' + @Minority + ''''
    END; 
    
    insert into #tblagereoprt
    insert into #tblagereoprt1
    
   exec(@vQuery1)
    exec(@vQuery)
   
    SET @N = @N +1
    END
    select * from  #tblagereoprt 
     select * from  #tblagereoprt1 
    drop table #tblagereoprt;
    drop table #tblagereoprt1;
  
  
END

解决方案

Try changing these lines

insert into #tblagereoprt
    insert into #tblagereoprt1

   exec(@vQuery1)
    exec(@vQuery)



to

insert into #tblagereoprt
Exec(@vQuery)

insert into #tblagereoprt1
exec(@vQuery1)


这篇关于如何在sql server中使用2个临时表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆