2012-08-01 1 views
0

im essayant le curseur dynamique dans ma procédure stockée dans l'oracle i utilisé le stmt comme ci-dessous:Erreur dans le concept ouvert pour-using

OPEN d for 
      'select datetime,'|| v_paramname ||',tt from datasource where '|| v_vrformula ||' and feederid=cast('||v_meterid||',varchar2(6)) and datetime>=:v_timeperiod' using v_timeperiod; 
    LOOP 
    FETCH d INTO V_dateval,V_value,V_dataid; 
    EXIT WHEN d%NOTFOUND; 
    INSERT INTO pseb.validationfailureaudit (MeterID,RuleID,DataType,Value,Dataid, TimePeriod,EditedValue,EditedTimePeriod,paramname) VALUES (V_meterid,V_ruleid,V_datatype,V_value ,V_dataid,V_dateval,null, null,V_paramname); 
    V_length:=V_length+1; 
    END LOOP; 
CLOSE d; 

J'obtiens manque erreur de mot-clé dans ouvert déclaration.

S'il vous plaît aidez-moi à le résoudre.

+2

Plutôt que d'ouvrir le curseur, sortie à l'écran l'instruction SQL final que vous construisez dynamiquement. Vous pouvez très bien avoir une erreur de syntaxe causant votre erreur 'Missing keyword'. – Ollie

Répondre

0

Vous semblez manquer comme AS clause du CAST:

... and feederid=cast('||v_meterid||' AS varchar2(6)) ...