Oracle
 sql >> Base de données >  >> RDS >> Oracle

Impossible d'exécuter une requête dynamique dans une procédure stockée lors de la sélection du nombre d'enregistrements

Votre instruction dynamique ne doit pas se terminer par un point-virgule ; c'est un séparateur d'instructions et non pertinent ou valide pour une seule instruction. De toute façon, vous ne pouvez exécuter qu'une seule instruction SQL dynamiquement (sauf si vous en mettez plusieurs dans un bloc PL/SQL anonyme).

Votre into est également au mauvais endroit :

TEMP_1 := 'select count ( '|| E ||' ) from ' || C;

DBMS_OUTPUT.PUT_LINE ('STARTED');
DBMS_OUTPUT.PUT_LINE (TEMP_1);

EXECUTE IMMEDIATE TEMP_1 INTO Count_source;

Je ne sais pas pourquoi vous vous souciez d'avoir et d'assigner des variables locales alors que vous pouvez utiliser directement les arguments de la procédure, ce qui, je pense, rend l'instruction plus lisible :

TEMP_1 := 'select count ( '|| COLUMN_SOURCE ||' ) from ' || TABLE_SOURCE;