Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Oracle
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-06-2004
febito febito is offline
Miembro
 
Registrado: dic 2003
Posts: 28
Poder: 0
febito Va por buen camino
Ejecucion de funciones

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.
Responder Con Cita
  #2  
Antiguo 25-06-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Esa sintaxis funcionará desde SqlPlus, no especifícas de donde estas llamando esta función, de todos modos, te recomiendo probar esta sintaxis:
Código SQL [-]
begin
  generar_id(parametro);
end;

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 25-06-2004
febito febito is offline
Miembro
 
Registrado: dic 2003
Posts: 28
Poder: 0
febito Va por buen camino
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.
Responder Con Cita
  #4  
Antiguo 25-06-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Cita:
Empezado por febito
En sql plus no funciona.
Mmmmm... hace mucho que no uso el SqlPlus como para asegurarlo... ¿Pusiste un ";" al final de la línea?
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #5  
Antiguo 25-06-2004
febito febito is offline
Miembro
 
Registrado: dic 2003
Posts: 28
Poder: 0
febito Va por buen camino
Si coloque el ; al finalizar la linea
Responder Con Cita
  #6  
Antiguo 25-06-2004
Avatar de marto
marto marto is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona, Catalunya
Posts: 882
Poder: 21
marto Va por buen camino
¿Que quiere decir "no funcionó"?
__________________
E pur si muove
Responder Con Cita
  #7  
Antiguo 25-06-2004
febito febito is offline
Miembro
 
Registrado: dic 2003
Posts: 28
Poder: 0
febito Va por buen camino
emite elmensaje

"comando SQL no terminado correctamente"
Responder Con Cita
  #8  
Antiguo 25-06-2004
Avatar de marto
marto marto is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona, Catalunya
Posts: 882
Poder: 21
marto Va por buen camino
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.
__________________
E pur si muove
Responder Con Cita
  #9  
Antiguo 25-06-2004
febito febito is offline
Miembro
 
Registrado: dic 2003
Posts: 28
Poder: 0
febito Va por buen camino
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
Responder Con Cita
  #10  
Antiguo 25-06-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
¡¡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!!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #11  
Antiguo 25-06-2004
Avatar de marto
marto marto is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona, Catalunya
Posts: 882
Poder: 21
marto Va por buen camino
1.- Por favor, encierra tu código entre tags [code] para que se pueda leer bien la próxima vez
2.- No pones el nobre del procedimiento en el ejemplo de código
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
__________________
E pur si muove
Responder Con Cita
  #12  
Antiguo 25-06-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cool

Cita:
Empezado por febito
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:

Código SQL [-]
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.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #13  
Antiguo 25-06-2004
febito febito is offline
Miembro
 
Registrado: dic 2003
Posts: 28
Poder: 0
febito Va por buen camino
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.
Responder Con Cita
  #14  
Antiguo 25-06-2004
febito febito is offline
Miembro
 
Registrado: dic 2003
Posts: 28
Poder: 0
febito Va por buen camino
gracias jachguate
Responder Con Cita
  #15  
Antiguo 15-07-2004
ramiretor ramiretor is offline
Miembro
 
Registrado: may 2003
Ubicación: México
Posts: 196
Poder: 21
ramiretor Va por buen camino
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
__________________
Ernesto R.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 09:08:12.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi