Click here to Skip to main content
15,881,687 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
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:
SQL
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
Posted
Updated 14-May-14 21:26pm
v2
Comments
syed shanu 15-May-14 3:27am    
Chk like this before create temp table check for exist if exit drop and create :

IF OBJECT_ID('tempdb..#tblagereoprt') IS NOT NULL
DROP TABLE #tblagereoprt

query:

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);


IF OBJECT_ID('tempdb..#tblagereoprt') IS NOT NULL
DROP TABLE #tblagereoprt

CREATE TABLE #tblagereoprt
(
disttname nvarchar(20)

);

IF OBJECT_ID('tempdb..#tblagereoprt1') IS NOT NULL
DROP TABLE #tblagereoprt1

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
bindash 15-May-14 3:31am    
same error is occured... thanks for reply
Bh@gyesh 15-May-14 3:56am    
Try to print '@vQuery1' and '@vQuery' and see does it built correct query? i.e. any syntax error?
bindash 15-May-14 4:46am    
when i m fetch data using single query.. means one query qt a time. then result is fetching.

1 solution

Try changing these lines

SQL
insert into #tblagereoprt
    insert into #tblagereoprt1

   exec(@vQuery1)
    exec(@vQuery)


to

SQL
insert into #tblagereoprt
Exec(@vQuery)

insert into #tblagereoprt1
exec(@vQuery1)
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900