Error ora-306500

A un procedimiento en forms(9i) le llega un parámetro el cual es una consulta (la variable p_consulta). Al ejecutar el Query dinámico se queda en la línea IF EXEC_SQL. FETCH_ROWS... Botando el error "FRM-40735 WHEN-BUTTON-PRESSED..
ORA-306500"
¿Por qué puede estar sucediendo esto? ¿Qué tengo mal? Este es parte del procedimiento :
v_connection_id EXEC_SQL.CONNTYPE;
v_cursorID EXEC_SQL.CURSTYPE;
declaracion de variables ....
BEGIN
SELECT v_usuario||'/'||v_pwd||DECODE(v_connect,null,null,chr(64)||v_connect)
INTO v_conectar
FROM dual;
v_connection_id := EXEC_SQL.OPEN_CONNECTION(v_conectar);
v_cursorID := EXEC_SQL.OPEN_CURSOR(v_connection_id);
EXEC_SQL.PARSE ( v_connection_id , v_cursorID , p_consulta ,exec_sql.V7); EXEC_SQL.DEFINE_COLUMN ( v_connection_id, v_cursorID , 1 ,v_n_distrito); EXEC_SQL.DEFINE_COLUMN ( v_connection_id, v_cursorID , 2 , v_solicitud); EXEC_SQL.DEFINE_COLUMN ( v_connection_id, v_cursorID , 3 ,v_f_registro); nIgn := EXEC_SQL.EXECUTE ( v_connection_id, v_cursorID);
LOOP
IF EXEC_SQL.FETCH_ROWS (v_connection_id, v_cursorID) > 0 THEN
nRows := nvl (nRows,0) + 1;
EXEC_SQL.COLUMN_VALUE ( v_connection_id, v_cursorID , 1 , v_n_distrito);
EXEC_SQL.COLUMN_VALUE ( v_connection_id, v_cursorID , 2 , v_solicitud);
EXEC_SQL.COLUMN_VALUE ( v_connection_id, v_cursorID , 3 , v_f_registro);
J := J+1;
END IF;
END LOOP;
EXEC_SQL.CLOSE_CURSOR (v_connection_id, v_cursorID); EXEC_SQL.CLOSE_CONNECTION (v_connection_id);
Gracias por todo.. Bye

1 respuesta

Respuesta
1
Primero que nada, si lo que quieres es ejecutas querys dinámicos, de 8i en adelante hay una manera más sencialla de realizarlo:
El ejemplo que mando a continuación realiza un query dinámico recibiendo parámetros externos y a su vez realizando un into a una variable como resultado del query
v_statement := 'select count(*) cantidad from empleados where compania = :1';
execute immediate v_statement using v_compania into p_cantidad;
Prueba y me avisas!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas