0
ALTER PROCEDURE [dbo].[usp_RmsExecuteValidationRule]   
    @nRuleId INT  
AS 
BEGIN   
    -- Local variables   
    DECLARE @sqlstat AS NVARCHAR(MAX)   
    DECLARE @params AS NVARCHAR(MAX)   
    DECLARE @RULE_QUERY NVARCHAR(MAX)  
    DECLARE @FIPS varchar(5) 

    SET @sqlstat = N'SELECT @RULE_QUERY=RULE_QUERY from GdmValidationRuleMaster where RULE_ID = @nRuleId'   
    --SET @sqlstat = N'SELECT ' + @RULE_QUERY + '=RULE_QUERY from GdmValidationRuleMaster where RULE_ID = ' + @nRuleId 

    SET @params = N'@nRuleId INT, @RULE_QUERY NVARCHAR(MAX) OUTPUT'   

    EXEC sp_executesql @sqlstat, @params, @nRuleId = @nRuleId, @RULE_QUERY= @RULE_QUERY OUTPUT 

    -- Output 
    SELECT @RULE_QUERY    
END 

Wenn wir Exec usp_RmsExecuteValidationRule 1, es gibt @RULE_QUERY dh:Nicht in der Lage zu passieren und Anfügen @variable auf der ausgewählten Abfrage

SELECT GDMID AS GDM_ID from @FIPSName+CADMIN1 WHERE INTPRIORITY IS NULL 

Hier habe ich absichtlich hinzugefügt @ FIPSName + als Präfix, weil ich einen anderen Tisch LCountry mit eine FIPS Säule:

FIPS 
---- 
GM 
FR 
UK 
AN 
BE 
BU 
BL 
BR 
BH 
CA 
AU 
VT 
CI 
CH 
CO 
CS 
EZ 
AS 
DA 
EC 
SP 
AR 
BD 
BB 
BF 
AV 
AA 
AC 
DO 
CU 
CJ 
DR 
GP 
GJ 
HA 
JM 
ST 
RQ 
SC 
MB 
MH 
XN 
XM 
XJ 
VC 
VI 
TK 
TD 
TB 
RN 
XL 
XK 
VQ 
GR 
GT 
GQ 
HK 
HO 
HU 
ID 
EI 
IS 
GZ 
XC 
WE 
IN 
IT 
SM 
JA 
LS 
LU 
MX 
NU 
NL 
NO 
NZ 
PM 
PE 
RP 
PL 
PO 
RO 
SW 
SI 
LO 
ES 
TU 
TW 
SZ 
VE 
SN 
SB 
PF 
PG 
PC 
NE 
NF 
MQ 
US 
SX 
TE 
TT 
WQ 
BQ 
DQ 
BS 
CK 
CQ 
CR 
AY 
AT 
BV 
LQ 
KQ 
JQ 
JU 
KT 
IO 
IP 

mit Schleife ich bin der Lage, Daten mit ObjectID Lcountry holen.

DECLARE @LoopCounter INT , @MaxBcountryObjId INT, 
     @FIPSName NVARCHAR(100) 
SELECT @LoopCounter = min(OBJECTID) , @MaxBcountryObjId = max(OBJECTID) 
FROM dbo.LCOUNTRY 

WHILE(@LoopCounter IS NOT NULL 
     AND @LoopCounter <= @MaxBcountryObjId) 
BEGIN 
    SELECT @FIPSName = FIPS 
    FROM dbo.LCOUNTRY WHERE OBJECTID = @LoopCounter 

    PRINT @FIPSName 
    SET @LoopCounter = @LoopCounter + 1 

Diese Abfrage gibt @FIPSName zurück.

FRAGE

I Wert @FIPName Should Hängt auf Rule_Query Rückgabewert dieser Rückkehr wollen. und der gleiche Wert kann auch ausgeführt werden.

Beispiel:

SELECT GDMID AS GDM_ID from @FIPSName+CADMIN1 WHERE INTPRIORITY IS NULL 
Changes Into 

SELECT GDMID AS GDM_ID from GM+CADMIN1 WHERE INTPRIORITY IS NULL 
Changes Into 

GDMID 
------   (The above query must be executed and Return GDMID.) 
1198 
+0

@Gordon freundlicherweise Lösung vorschlagen .. Danke. – Chetan

+0

@vkp freundlicherweise schlagen Lösung .. Danke – Chetan

+0

@ rory.ap freundlicherweise Lösung vorschlagen .. Danke – Chetan

Antwort

0

Wie ich verstehe Sie

SELECT @RULE_QUERY=RULE_QUERY from GdmValidationRuleMaster where RULE_ID = @nRuleId 

Above Abfrage Sie geben das Ergebnis ausgeführt werden soll.

Ich denke, Sie müssen nicht sp_executesql verwenden.

Verwandte Themen