question

Saarmedh avatar image
Saarmedh asked

Must declare the scalar variable

declare @Reg_No char(7)

set @Reg_No = '18S3320'

go

declare @ClientCode CHAR(10)

SET @ClientCode = 'SELECT client_code FROM [dbo].[registration] AS [R] WHERE [R].[reg_no]= ' + @Reg_No go

declare @ClientHasMapping BIT

set @ClientHasMapping = 0

SET @ClientHasMapping =(SELECT CAST(CASE WHEN EXISTS(SELECT * FROM Dbo.[AnalyteMapping] AS [AM] where [AM].[client_code] = @ClientCode) THEN 1 ELSE 0 END AS BIT)) go

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

CREATE TABLE #data

( ID int IDENTITY(1,1) PRIMARY KEY,

[COC ID] VARCHAR(6) NULL,

[COC GENERATED BY] VARCHAR(30) NULL,

[COC GENERATED Date] VARCHAR(10) NULL,

[LOCATION CODE] VARCHAR(50) NULL,

[LAB NAME] VARCHAR(10) NULL,

[IH LOG NUMBER] VARCHAR(6) NULL,

[TYPE] VARCHAR(30) NULL,

[PLANT SAMPLE ID] VARCHAR(22) NULL,

[MEDIA] VARCHAR(50) NULL,

[MEDIA LOT/SERIAL NUMBER] VARCHAR(14) NULL,

[SAMPLE DATE] VARCHAR(10) NULL,

[VOLUME] VARCHAR(7) NULL,

[TOTAL MINUTES] VARCHAR(7) NULL,

[SUBSTANCE / AGENT] VARCHAR(60) NULL,

[CAS NUMBER] VARCHAR(20) NULL,

[DURATION TYPE] VARCHAR(5) NULL,

OEL VARCHAR(128) NULL,

[OEL UNITS] VARCHAR(10) null,

[LAB AMOUNT] VARCHAR(128) NULL,

[LAB AMOUNT UNITS] VARCHAR(10) null,

[LAB CONCENTRATION] VARCHAR(128) NULL,

[LAB CONCENTRATION UNITS] VARCHAR(10) null,

[DETECTION LIMIT] numeric(20,8) null,

[DETECTION LIMIT UNITS] VARCHAR(10) null,

[DETECTION CODE] VARCHAR(10) null,

[LAB ANALYST] VARCHAR(10) null,

[LAB SAMPLE ID] VARCHAR(15) null,

[DATE RECEIVED] VARCHAR(10) NULL,

[Date Analyzed] VARCHAR(10) NULL,

[ANALYTICAL METHOD] VARCHAR(150) NULL,

[LAB COMMENTS] VARCHAR(200) NULL )

Declare @sql nvarchar(max)

set @sql = 'Insert into #data

( [COC ID] ,

[COC GENERATED BY] ,

[COC GENERATED Date] ,

[LOCATION CODE] ,

[LAB NAME] ,

[IH LOG NUMBER] ,

[TYPE] ,

[PLANT SAMPLE ID] ,

[MEDIA] ,

[MEDIA LOT/SERIAL NUMBER] ,

[SAMPLE DATE] ,

[VOLUME] ,

[TOTAL MINUTES] ,

[SUBSTANCE / AGENT] ,

[CAS NUMBER] ,

[DURATION TYPE] ,

OEL , [OEL UNITS] , [LAB AMOUNT] , [LAB AMOUNT UNITS] , [LAB CONCENTRATION] ,

[LAB CONCENTRATION UNITS] , [DETECTION LIMIT] , [DETECTION LIMIT UNITS] ,

[DETECTION CODE] , [LAB ANALYST] , [LAB SAMPLE ID] , [DATE RECEIVED] , [Date Analyzed] ,

[ANALYTICAL METHOD] , [LAB COMMENTS])

SELECT distinct

COALESCE([JTR].[CoCNo],'''') AS [COC ID] ,

'' as [COC GENERATED BY] ,'' as [COC GENERATED Date] ,

[JTR].[Sample Description] AS [LOCATION CODE] ,

''ChemCentre'' as [LAB NAME] ,'''' as [IH LOG NUMBER] ,

'''' AS [TYPE] ,[JTR].[SampleClientID] AS [PLANT SAMPLE ID] ,'''' as [MEDIA] ,

'''' as [MEDIA LOT/SERIAL NUMBER] ,'''' as [SAMPLE DATE] ,'''' as [VOLUME] ,

'''' as [TOTAL MINUTES] ,[JTR].[analyte] AS [SUBSTANCE / AGENT] ,

A.[CASNumber] AS [CAS NUMBER] ,'''' AS [DURATION TYPE] ,'''' AS OEL ,

'''' AS [OEL UNITS] ,'''' AS [LAB AMOUNT] ,'''' AS [LAB AMOUNT UNITS] ,

'''' AS [LAB CONCENTRATION] ,'''' as [LAB CONCENTRATION UNITS] ,

'''' as [DETECTION LIMIT] ,'''' as [DETECTION LIMIT UNITS] ,'''' as [DETECTION CODE] ,

'''' as [LAB ANALYST] ,LTRIM(RTRIM([JTR].Reg_No)) + ''/'' + [JTR].lab_no as [LAB SAMPLE ID] ,[JTR].[DateReceived_V3] as [DATE RECEIVED] ,'''' as [Date Analyzed] ,

'''' as [ANALYTICAL METHOD] ,'''' as [LAB COMMENTS]

FROM

[dbo].[JobTestResults_CHEVRON]( ' + @Reg_No + ',1) AS [JTR]

INNER JOIN [dbo].[analyte] AS [A]

ON a.[analyte_name]=[JTR].[analyte_name]

LEFT JOIN

(SELECT [ClientLongAnalyteNm], [ClientShortAnalyteNM], asp.method_no, asp.[analyte_name]

FROM [dbo].[AnalyteMapping] AM

INNER JOIN [dbo].[analyte_spec] AS [ASP] ON [ASP].[fk_Analyte] = [AM].[fk_Analyte] AND

[ASP].[fk_Method] = [AM].[fk_Method]

WHERE AM.client_code =

CASE WHEN @ClientHasMapping = 1 AND am.[analyte_name]=asp.[fk_Analyte]

AND am.[fk_Method]=asp.[fk_Method] THEN '+@clientcode+' ELSE ''SSD2'' END ) AS AM

ON AM.[analyte_name]= JTR.[analyte_name] AND AM.method_no = JTR.method WHEREJTR.method = ''ORG205AT'' or

(JTR.method = ''ORG101'' and AM.analyte_name = ''TubeExt'') or

(JTR.method = ''ORG205AM'') or

(JTR.method = ''iHG1FCVG'') or

(JTR.method = ''ORG199C'')

ORDER BY [PLANT SAMPLE ID],[SUBSTANCE / AGENT]'

EXEC (@sql);

update #data set #data.[ANALYTICAL METHOD] = CONMETHOD.[ANALYTICAL METHOD]

from (SELECT top 1 [S].client_id,

STUFF((SELECT distinct ', ' + [T].method_no FROM test as [T] WHERE [T].reg_no = [S].reg_no FOR XML PATH('')), 1, 1, '') as [ANALYTICAL METHOD]

FROM [dbo].[Sample] AS [S]

where [S].reg_no = @Reg_No ) as CONMETHOD

inner join #data on CONMETHOD.client_id = #data.[PLANT SAMPLE ID]

When i run this code i am getting Must declare the scalar variable for @Reg_No,@ClientCode,@ClientHasMapping when i try to run it. how can i resolve the issue

sql server 2012sql querytemporary-table
10 |1200

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

1 Answer

·
Kev Riley avatar image
Kev Riley answered

You can only reference a variable within the same scope, and by using GO you are separating your code up into batches that have their own scope. Simply remove the GO statements.

10 |1200

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.