Ver Mensaje Individual
  #13 (permalink)  
Antiguo 16/04/2013, 20:28
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: Problemas con ejecución de funcion en Oracle

Hay un par de cosas que no me terminan de cerrar (aún considerando que llevo sólo un año y medio en Oracle):
1) Las llamadas de tipo $1 y $2, son más propias de la ejecución de scripts Oracle por bash (consola), que de un stored procedure. Al menos en ninguno de los SP que están en la base de nuestra empresa existen parámetros usados así...
2) Pareciera que pretendieras usar cursores, pero no están declarados. Y el uso de cosas como "SELECT rsl IN SELECT rsu.c_elementvalue_id...", o "FOR rs IN SELECT Account_ID, DATEACCT..." simplemente no las encuentro ni en los manuales.
¿Estás seguro de no estar usando sintaxis de PostgreSQL o Firebird?

Lo que sí he encontrado documentado como para Oracle 11g, es una forma como esta:
Código SQL:
Ver original
  1. FOR i IN ( SELECT prim_key j FROM data_table )
  2. loop
  3.    SELECT 'Very long descrip of prim_key:', prim_key
  4.       FROM data_table WHERE prim_key = i.j ;
  5.    SELECT 'Very long descrip of field 1:', field1
  6.       FROM data_table WHERE prim_key = i.j ;
  7.    SELECT 'Very long descrip of field 2:', field2
  8.       FROM data_table WHERE prim_key = i.j ;
  9. END loop
Donde, puedes ver, la subconsulta de origen está encerrada entre paréntesis. Aunque, claro, no es un modo muy ortodoxo de hacerlo. Hay algunas otras formas mucho más eficientes.

Fuera de eso, insisto, da la impresión de que estás trayendo sintaxis de un DBMS a otro, y no existe un PL/SQL estándar...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)