Ver la Versión Completa : Ejecucion de funciones
febito
25-06-2004, 15:26:46
Hola, no encuentro la manera de ejecutar una funcion creada por mi en Oracle 9i.
Probe con: "exec generar_id(parametro)" pero no funciono.
Alguien pordria ayudarme. Muchas gracias.
delphi.com.ar
25-06-2004, 15:30:26
Esa sintaxis funcionará desde SqlPlus, no especifícas de donde estas llamando esta función, de todos modos, te recomiendo probar esta sintaxis:
begin
generar_id(parametro);
end;
Saludos!
febito
25-06-2004, 15:42:05
En sql plus no funciona.
Primero quiero encontrar la forma de probar desde sql plus y luego introducirla al codigo. Esta funcion debo llamarla finalmente desde codigo perl.
delphi.com.ar
25-06-2004, 15:46:35
En sql plus no funciona.
Mmmmm... hace mucho que no uso el SqlPlus como para asegurarlo... ¿Pusiste un ";" al final de la línea?
febito
25-06-2004, 15:55:48
Si coloque el ; al finalizar la linea
marto
25-06-2004, 16:09:12
¿Que quiere decir "no funcionó"?
febito
25-06-2004, 16:21:32
emite elmensaje
"comando SQL no terminado correctamente"
marto
25-06-2004, 16:52:33
pues a mi la sintaxis exec "nombre_procedure(parametro1, parametro2);" me funciona bien. Asegúrate del punto y coma final y de que sea un procedure, no una function.
febito
25-06-2004, 18:14:06
Mira yo tengo este sp en la base:
(
NOMTABLA IN VARCHAR2 DEFAULT NULL,
NUEVO_ID OUT number
)
as
begin
SELECT S.SECUENCIA INTO GENERAR_ID_S.NUEVO_ID FROM omwb_login1.SECUEN S WHERE S.TABLENAME = NOMTABLA;
end GENERAR_ID_S;
y lo llamo asi:
exec omwb_login1.generar_id_s('ESTADO');
y me da este error
PLS-00306: número o tipos de argumentos erróneos al llamar a 'GENERAR_ID_S'
ORA-06550: línea 1, columna 7:
PL/SQL: Statement ignored
que estoy haciendo mal?
Gracias por la ayuda
delphi.com.ar
25-06-2004, 18:20:22
¡¡No te puedo creer!!... nos estuviste engañando :)
Esto no te dice nada: PLS-00306: número o tipos de argumentos erróneos al llamar a 'GENERAR_ID_S'
Simplemente el procedure tiene dos parámetros y vos solo estas pasando uno!!
marto
25-06-2004, 18:23:19
1.- Por favor, encierra tu código entre tags [code] para que se pueda leer bien la próxima vez :confused:
2.- No pones el nobre del procedimiento en el ejemplo de código :confused: :confused:
3.- Si se supone que el procedimiento es el que aparece en el error, me parece que el propio mensaje te da la solucion: el procedimiento espera dos parámetros y tú solamente le pasas uno :confused: :confused: :confused:
jachguate
25-06-2004, 18:24:11
la manera de ejecutar una funcion
En plsql, debes asignar el resultado de una función a una variable, o bien usarla en una expresión; no podes ejecutarla como un procedimiento al estilo de pascal.
Por lo tanto, debes hacer algo como:
declare
variable tipodelafuncion;
begin
variable := funcion(parametros);
end;
Eso debiera funcionar tanto en pl/sql como en un query cualquiera desde el cliente.
Hasta luego.
;)
febito
25-06-2004, 18:25:13
no es asi yo habia creado una funcion
y lo transforme a un sp par seguir el consejo que me dieron
pero en realidad lo que necesito es una funcion no un sp.
febito
25-06-2004, 18:41:22
gracias jachguate
ramiretor
15-07-2004, 18:31:41
Hola a todos:
Para ejecutar una funcion en PLSQL si no mal recuerdo existe la expresión:
select "NombreFuncion(Parametro)" from dual;
Ahora bien, para llamar a la función desde el SP necesitarás hacer lo que te recomienda jachguate de asignarle el valor de la función a una variable.
Espero te sirva
Saludos
:cool:
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.