Сейчас я пытаюсь создать процедуру, в которой я использую '' для жесткого кодирования определенных значений.
вот часть моего оператора select
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[TWSValuationStagingGAPC]
AS
SET LANGUAGE english
DECLARE @date char(10);
DECLARE @transactiondate char(10);
DECLARE @tempDate DATETIME = CONVERT(varchar, GETDATE(), 23);
DECLARE @tableName as char(50);
DECLARE @currentYear as char(4);
DECLARE @currentMonth as char(50);
DECLARE @dummy as char(50);
DECLARE @risk as char(50);
DECLARE @TopDmValuation as char(50);
DECLARE @AKT_SUL_TAE as char(50);
DECLARE @DIS as char(50);
DECLARE @GAPC as char(50);
DECLARE @WAISOL as char(50);
DECLARE @N030 as char(50);
DECLARE @S030 as char(50);
DECLARE @SDIT as char(50);
DECLARE @RUNSOL as char(50);
DECLARE @T14U_01 as char(50);
DECLARE @t as char(50);
DECLARE @f as char(50);
DECLARE @0 as char(50);
SET @date = EOMONTH(@tempDate, -1);
SET @transactiondate= dateadd(day,1,EOMONTH(@tempDate, -1));
SET @currentYear = DATEPART ( yyyy , GETDATE());
SET @currentMonth = datename (m, getDate());
SET @tableName = 'input' + @currentYear + @currentMonth;
SET @dummy = 'dummy';
SET @risk = 'risk';
SET @TopDmValuation = 'TopDmValuation';
SET @AKT_SUL_TAE = 'AKT_SUL_TAE';
SET @DIS = 'DIS';
SET @GAPC = 'GAPC';
SET @WAISOL = 'WAISOL';
SET @N030 = 'N030';
SET @S030 = 'S030';
SET @SDIT = 'SDIT';
SET @RUNSOL = 'RUNSOL';
SET @T14U_01 = 'T14U_01';
SET @t = 't';
SET @f = 'f';
SET @0 = '0';
DECLARE @longstring nvarchar(max);
EXEC('
BEGIN
Insert Into ValuationStaging.[dbo].' + @tableName + '
select Distinct
' + @dummy + ' as UID
,null as DMCREATETIME
,null as COBABS
,null as COBABSDATE
,null as COBPCT
,null as COBSTEP
,null as AGECHILDVESTING
,lcv.PREMIUMTIMESPEC_SELECTEDENDAGE as AGEPREMIUMEND
,lcv.BENEFITTIMESPEC_SELECTEDENDAGE as AGETERMINATIONBENEFIT
,lcv.RISKTIMESPEC_SELECTEDENDAGE as AGETERMINATIONRISK
,lcv.BENEFITTIMESPEC_SELECTEDSTARTAGE as AGEVESTING
,ob.BENEFIT as BENEFIT
,null as BENEFITRELATIONPC
,null as BONUSDISTRIBUTIONRULE
,null as COBTYPE
,p.[CENTRALREGISTRATION_REGISTRATION] as CPRNUMBERLIFE1
,null as CPRNUMBERLIFE2
,let.COMMITDATE as EVENTCOMMITDATE
,let.EVENTDATE as EVENTDATE
,lei.LIFEEVENTSORTNO as EVENTSORTNO
,null as FREQUENCYANNUITY
,lpv.SELECTEDPREMIUMFREQUENCY as FREQUENCYPREMIUM
,lcv.LIFECOVERSTATE as INFORCEINDICATOR
,null as INSURANCECLASS
,null as LENGHTOFINSTALLMENT
,cf.NAME as LIFEBASIS
,lcv.uid as LIFECOVERVERSIONUID
,let.uid as LIFEEVENTTRANSUID
,lpa.uid as LIFEPACKAGEUID
,lpv.uid as LIFEPOLICYVERSIONUID
,' + @risk + ' as LINEOFBUSINESS
,ob.uid as OPTIMIZATIONBALANCEUID
,null as ORIGINALINCEPTIONDATE
,null as ORIGINALPREMIUMTYPEMEMBERSYSTEM
,SUBSTRING(lpa.LEGALGROUPID, 4, 1) as PARTICIPATIONGROUPCOST
,SUBSTRING(lpa.LEGALGROUPID, 1, 1) as PARTICIPATIONGROUPINTEREST
,SUBSTRING(lpa.LEGALGROUPID, 2, 1) as PARTICIPATIONGROUPRISK
,null as PAYMENTDATE
,lp.id as POLICYNUMBER
,PREMIUM as PREMIUM
,lpv.LIFEPOLICYSTATUS as PREMIUMSTATUSMEMBERSYSTEM
,null as REGULATIONSNUMBER
,ob.FIRSTORDERBALANCE as RESERVE1ORDER
,ob.SECONDORDERBALANCE as RESERVE2ORDER
,ob.RESERVEACCOUNT_UID as RESERVEACCOUNTUID
,lcv.BENEFITTIMESPEC_SELECTEDSTARTAGE as RETIREMENTAGEINPUT
,ob.GLDIM1 as REWARDID
,null as SAVINGSCOVER
,null as SHADOW
,0 as SOLIDARYPRICE -- always 0 for non solidaryCovers
,null as STARTMONTHANNUITY
,null as STARTMONTHPREMIUM
,null as STATEMEMBERSYSTEM
,null as SUBSCRIPTIONDATE
,null as SUMATRISKDEAD
,null as SUMATRISKDEAD_CO
,null as SUMATRISKDISABILITY
,null as TAXCODE
,null as TECHNICALBENEFITSTARTDATE
,null as TECHNICALPREMIUMENDDATE
,null as TECHNICALRISKENDDATE
,null as EXPIRYMONTH
,' + @TopDmValuation + ' as DTYPE
,SETTLEMENTFEE as SETTLEMENTFEE
,null as BONUS
Однако mysql почему-то думает, что я имею в виду столбец с именем «dummy», как видно из кода ошибки ниже. и я не совсем уверен, почему. или как я могу заставить его вместо этого использовать 'dummy' в столбце uid.
Msg 207, Level 16, State 1, Line 150
Invalid column name 'GAPC'.
Msg 207, Level 16, State 1, Line 150
Invalid column name 'GAPC'.
Msg 207, Level 16, State 1, Line 179
Invalid column name 'DIS'.
Msg 207, Level 16, State 1, Line 180
Invalid column name 'GAPC'.
Msg 207, Level 16, State 1, Line 181
Invalid column name 'GAPC'.
Msg 207, Level 16, State 1, Line 182
Invalid column name 'WAISOL'.
Msg 207, Level 16, State 1, Line 183
Invalid column name 'N030'.
Msg 207, Level 16, State 1, Line 183
Invalid column name 'SDIT'.
Msg 207, Level 16, State 1, Line 184
Invalid column name 'S030'.
Msg 207, Level 16, State 1, Line 184
Invalid column name 'RUNSOL'.
Msg 207, Level 16, State 1, Line 186
Invalid column name 'T14U_01'.
Msg 207, Level 16, State 1, Line 187
Invalid column name 't'.
Msg 207, Level 16, State 1, Line 187
Invalid column name 'f'.
Msg 207, Level 16, State 1, Line 8
Invalid column name 'dummy'.
Msg 207, Level 16, State 1, Line 38
Invalid column name 'risk'.
Msg 207, Level 16, State 1, Line 70
Invalid column name 'TopDmValuation'.
Msg 207, Level 16, State 1, Line 107
Invalid column name 'AKT_SUL_TAE'.
Msg 213, Level 16, State 1, Line 6
Я также получаю ту же ошибку в предложении where, где я использую
and ( lcv.LIFECOVERTYPEREF IN (' + @GAPC + ') or lcv.lifecovertyperef is null)