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 

Quand nous Exec usp_RmsExecuteValidationRule 1, elle retourne @RULE_QUERY-à-dire:Pas en mesure de passer et Append @variable sur la requête sélectionnée

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

Ici, j'ai ajouté intentionnellement @ FIPSName + préfixe parce que j'ai une autre table LCountry avec une colonne FIPS:

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 

en utilisant la boucle, je suis en mesure à l'aide de récupérer les données ObjectID de Lcountry.

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 

Cette requête renvoie @FIPSName.

QUESTION

Je veux Ce retour valeur @FIPName devrait-elle sur le retour de Ajoute Rule_Query Valeur. et la même valeur peut être exécutée aussi.

Par exemple:

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 suggère gentiment la solution .. Merci. – Chetan

+0

@vkp veuillez suggérer la solution .. Merci – Chetan

+0

@ rory.ap veuillez suggérer la solution .. Merci – Chetan

Répondre

0

Comme je comprends que vous voulez exécuter

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

Au-dessus de requête vous donnera le résultat.

Je pense que vous n'avez pas besoin d'utiliser sp_executesql.