Link to home
Start Free TrialLog in
Avatar of jsuanque
jsuanqueFlag for Australia

asked on

Incorrect syntax near the keyword...T_SQL error when incorporated to stored procedure.

Hello Experts,
Been banging around to figure out what's causing the syntax error ...i have the a working Insert statement (See attached file)  but once incorporated to stored procedure it is somehow causing syntax error ...Is my Insert statement (Multiple sub-query; Joins) going to work in a variable SQL (@SQL) inside a SP below...
CREATE PROCEDURE [dbo].[0000_Proc]
AS
DECLARE @tab table (i int identity, CN_Schema VARCHAR(10))
DECLARE @rows INT
DECLARE @i INT
DECLARE @counter INT
DECLARE @CN_Schema VARCHAR(10)

TRUNCATE TABLE Mon_DB.dbo.AUD_MON

INSERT INTO @tab
SELECT name as CN_Schema FROM Bus_DB.sys.schemas
WHERE SCHEMA_ID BETWEEN 14 AND 200 AND name NOT IN ('TestBus','DevBus')

SET @rows = @@Rowcount

SELECT @i = 0, @counter=0
WHILE (@counter < @rows)
-- of just WHILE (1=1)
BEGIN
      SELECT TOP 1 @CN_Schema = CN_Schema, 
                   @i=i
      FROM @tab WHERE i > @i
      ORDER BY i
      IF @@Rowcount =  0    BREAK


DECLARE @SQL VARCHAR(5000)
SET @SQL = '
INSERT INTO Mon_DB.dbo.AUD_MON (Col_1,Col_2,Col_3,Col_4,Col_5,Col_6,Col_7,Col_8,Col_9,Col_10,Col_11,Col_12,Col_13,Col_14,Col_15,Col_16,Col_17,Col_18,Col_19,Col_20)
(
SELECT UPPER(c.IT_School_CODE) as Sch_Schema, a.* 
FROM 
(
SELECT a.Col_1
      ,a.Col_2
      ,a.Col_3
      ,CAST(a.Col_4 AS INT) AS Col_4
      ,a.UPN AS STUDENT_UPN
      ,CASE WHEN a.Col_5 IS NULL THEN '''' 
            WHEN a.Col_5 = '''' THEN '''' ELSE LEFT(a.Col_5,LEN(a.Col_5)-14)END  AS Col_5
      ,NULL AS Col_A
      ,a.Col_6
      ,a.Col_6+'' ''+ a.Col_7 AS Col_7
      ,CASE WHEN a.Col_8 = ''2'' THEN ''M'' 
            WHEN a.Col_8 = ''3'' THEN ''F'' ELSE '''' END AS Col_8
      ,CASE WHEN b.Col_2 = ''Not Specified'' THEN ''n/s''
            WHEN b.Col_2 = ''Not Stated''  THEN ''ns''
            WHEN b.Col_2 = ''Missing''  THEN ''M''
            WHEN b.Col_2 = ''Existing''  THEN ''E'' END AS Col_9
      ,CASE WHEN c.Col_2 = ''True'' THEN 1 ELSE 0 END AS Col_10
      ,NULL AS Col_11
      ,''My Note'' AS Col_12
      ,e.Col52 AS Col_13
      ,f.Col62 AS Col_14
      ,f1.Col62 AS Col_15
      ,g.Col72 AS Col_16
      ,h.Col82 AS Col_17
      ,l.Col102 AS Col_18
      ,h.Col112 AS Col_19
      ,a.DATE_MODIFIED AS Col_20
  FROM (SELECT *
			  ,CASE WHEN Col_X IS NULL THEN 1
					WHEN Col_X = '''' THEN 1 ELSE Col_X END AS Col_X_ID
			  ,CASE WHEN Col_Y IS NULL THEN 1
					WHEN Col_Y = '''' THEN 1 ELSE Col_Y END AS Col_Y_ID
			  ,CASE WHEN Col_Z IS NULL THEN 1
					WHEN Col_Z = '''' THEN 1 ELSE Col_Z END AS Col_Z_ID
          FROM Bus_DB.'+@CN_Schema+'.Table1) a INNER JOIN (SELECT *
																  ,CASE WHEN Col_XX IS NULL THEN 174 
																		WHEN Col_XX = '''' THEN 174 ELSE Col_XX END AS Col_XX_ID
																  ,CASE WHEN Col_YX IS NULL THEN 469 
																		WHEN Col_YX = '''' THEN 469 ELSE Col_YX END AS Col_YX_ID
															FROM Bus_DB.'+@CN_Schema+'.Table2) b ON a.Col11 = b.Col21 
											   INNER JOIN Bus_DB.'+@CN_Schema+'.Table3 c  ON a.Col11 = c.Col31  AND c.ID_TYPE = 1
											   INNER JOIN Bus_DB.'+@CN_Schema+'.Table4 d  ON c.Col19 = d.Col49 
											   INNER JOIN Bus_DB.'+@CN_Schema+'.Table5 e ON a.Col_X_ID = e.Col51 
											   INNER JOIN Bus_DB.'+@CN_Schema+'.Table6 f ON a.Col_Y_ID = f.Col61 
											   INNER JOIN Bus_DB.'+@CN_Schema+'.Table6 f1 ON a.Col_Z_ID = f1.Col61 
											   INNER JOIN Bus_DB.'+@CN_Schema+'.Table7 g ON b.Col_XX_ID = g.Col71 
											   INNER JOIN Bus_DB.'+@CN_Schema+'.Table8 h ON b.Col_YX_ID = h.Col81  
											   INNER JOIN (SELECT *
																  ,CASE WHEN Col_AA IS NULL THEN 1 WHEN Col_AA = '''' THEN 1 ELSE Col_AA END AS Col_AA_ID
																  ,CASE WHEN Col_AB IS NULL THEN 1 WHEN Col_AB = '''' THEN 1 ELSE Col_AB END AS Col_AB_ID
															FROM Bus_DB.'+@CN_Schema+'.Table9) i ON a.Col11 = i.Col91 
											   INNER JOIN Bus_DB.'+@CN_Schema+'.Table10 l ON i.Col_AA_ID = l.Col101
											   INNER JOIN Bus_DB.'+@CN_Schema+'.Table11 m ON i.Col_AB_ID = m.Col111 
  WHERE a.Bus_Role <> ''A''
 ) a,
 Bus_DB.'+@CN_Schema+'.SCHOOL b, Mon_DB.dbo.AUD_BUS c 
 WHERE (b.District= c.District AND b.Period = c.Period)
 )
'
EXECUTE(@SQL)

SET @counter = @counter + 1

END

GO

Open in new window

ExpExc-WorkingInsertT-SQL.sql
ExpExc-SyntaxErrorSP-SQL.sql
ASKER CERTIFIED SOLUTION
Avatar of PortletPaul
PortletPaul
Flag of Australia image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of jsuanque

ASKER

As mentioned original query changes was the one stated.