sql >> Base de Datos >  >> RDS >> Oracle

No se puede ejecutar la consulta dinámica en el procedimiento almacenado al seleccionar el recuento de registros

Su declaración dinámica no debe tener un punto y coma al final; eso es un separador de declaraciones y no es relevante ni válido para una sola declaración. De todos modos, solo puede ejecutar una sola instrucción SQL dinámicamente (a menos que coloque varias en un bloque PL/SQL anónimo).

Su into también está en el lugar equivocado:

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;

No estoy seguro de por qué se molesta en tener y asignar variables locales cuando puede usar los argumentos del procedimiento directamente, lo que creo que hace que la declaración sea más legible:

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