Ver Mensaje Individual
  #6 (permalink)  
Antiguo 31/05/2012, 13:21
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Tipo no reconocido en SP

En realidad, si está declarada. eso es un error de Copy+Paste.
El código es:
Código SQL:
Ver original
  1. CREATE OR REPLACE PROCEDURE "IniciarTabla" IS
  2.     TYPE t_employ IS TABLE OF EMPLOYEES%ROWTYPE;
  3.     t_row t_employ;
  4. BEGIN
  5.     SELECT
  6.         EMPLOYEE_ID,
  7.         FIRST_NAME,
  8.         LAST_NAME,
  9.         EMAIL,
  10.         PHONE_NUMBER,
  11.         HIRE_DATE,
  12.         JOB_ID,
  13.         SALARY,
  14.         COMMISSION_PCT,
  15.         MANAGER_ID,
  16.         DEPARTMENT_ID,
  17.         SYSDATE
  18.     BULK COLLECT INTO t_row
  19.         FROM EMPLOYEES;
  20.  
  21.     FORALL i IN t_row.FIRST .. t_row.LAST
  22.     UPDATE EMPLOYEES SET BAJA = SYSDATE
  23.     WHERE EMPLOYEE_ID = t_row(i).EMPLOYEE_ID;
  24.          
  25.  
  26.     FORALL i IN t_row.FIRST .. t_row.LAST
  27.     INSERT INTO EMPLOYEES(
  28.         EMPLOYEE_ID,
  29.         FIRST_NAME,
  30.         LAST_NAME,
  31.         EMAIL,
  32.         PHONE_NUMBER,
  33.         HIRE_DATE,
  34.         JOB_ID,
  35.         SALARY,
  36.         COMMISSION_PCT,
  37.         MANAGER_ID,
  38.         DEPARTMENT_ID)
  39.     VALUES(
  40.         EMPLOYEES_SEQ.NEXTVAL,
  41.         t_row(i).FIRST_NAME,
  42.         t_row(i).LAST_NAME,
  43.         t_row(i).EMAIL,
  44.         t_row(i).PHONE_NUMBER,
  45.         SYSDATE,
  46.         t_row(i).JOB_ID,
  47.         t_row(i).SALARY,
  48.         t_row(i).COMMISSION_PCT,
  49.         t_row(i).MANAGER_ID,
  50.         t_row(i).DEPARTMENT_ID);
  51.     COMMIT;
  52. END;
y la respuesta:
Código SQL:
Ver original
  1. Line    POSITION    Text
  2. 23  22  PLS-00436: restricción de implementación: no se puede hacer referencia a campos de la tabla de registros BULK In-BIND
  3. 23  22  PLS-00382: el tipo de la expresión no es correcto
  4. 23  22  PL/SQL: ORA-22806: no es un objeto ni un elemento REF
  5. 22  2   PL/SQL: SQL Statement ignored
  6. 41  3   PLS-00436: restricción de implementación: no se puede hacer referencia a campos de la tabla de registros BULK In-BIND
  7. 41  3   PLS-00382: el tipo de la expresión no es correcto
  8. 42  3   PLS-00436: restricción de implementación: no se puede hacer referencia a campos de la tabla de registros BULK In-BIND
  9. 42  3   PLS-00382: el tipo de la expresión no es correcto
  10. 43  3   PLS-00436: restricción de implementación: no se puede hacer referencia a campos de la tabla de registros BULK In-BIND
  11. 43  3   PLS-00382: el tipo de la expresión no es correcto
  12. 44  3   PLS-00436: restricción de implementación: no se puede hacer referencia a campos de la tabla de registros BULK In-BIND
  13. 44  3   PLS-00382: el tipo de la expresión no es correcto
  14. 46  3   PLS-00436: restricción de implementación: no se puede hacer referencia a campos de la tabla de registros BULK In-BIND
  15. 46  3   PLS-00382: el tipo de la expresión no es correcto
  16. 47  3   PLS-00436: restricción de implementación: no se puede hacer referencia a campos de la tabla de registros BULK In-BIND
  17.         1 - 15

Yo entiendo lo que me responde, pero lo que me dice no se ajusta a ningún manual ni ejemplo de BULK COLLECT / FORALL que haya encontrado y que usé como base para esto.

Agradezco cualquier guía.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)