Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Función PL/SQL

Estas en el tema de Función PL/SQL en el foro de Oracle en Foros del Web. Hola, estoy iniciándome en el lenguaje PL/SQL y tengo que realizar una función a la que se le pasan tres parámetros, números, (n1, n2, n3) ...
  #1 (permalink)  
Antiguo 16/12/2013, 03:35
 
Fecha de Ingreso: octubre-2013
Ubicación: Castellón de la Plana
Mensajes: 9
Antigüedad: 10 años, 6 meses
Puntos: 0
Función PL/SQL

Hola, estoy iniciándome en el lenguaje PL/SQL y tengo que realizar una función a la que se le pasan tres parámetros, números, (n1, n2, n3) se introducen los dos primeros parámetros y sacamos el mayor..después lo tengo que comparar con el tercer parámetro y sacar también el mayor..

Anteriormente he realizado la función con dos parámetros y el resultado ha sido satisfactorio..

FUNCIÓN MAX2 CON DOS PARÁMETROS.


Código:
CREATE OR REPLACE FUNCTION MAX2

(n1 number, n2 number)

RETURN number

IS

maximo number;

BEGIN

IF n1>=n2

    THEN

        maximo:=n1;

    ELSE
        maximo:=n2;

END IF;

RETURN maximo;

END;
FUNCIÓN MAX3 CON TRES PARÁMETROS.


Código:
CREATE OR REPLACE FUNCTION MAX3

(n1 number, n2 number, n3 number)

RETURN number

IS

m number;
maximo number;

BEGIN

IF n1>=n2

    THEN

        m:=n1;

    ELSE

        m:=n2;

END IF;

RETURN m;

IF m>=n3

    THEN

        maximo:=m;

    ELSE
        maximo:=n3;

END IF;

RETURN maximo;

END;
No sé la forma de asignar el resultado del primer if, que compara los dos números y extrae el mayor, en la variable m sin hacer un return..por otra parte creo que no puede haber dos "return" en una misma función..

Alguna pista...
  #2 (permalink)  
Antiguo 16/12/2013, 07:30
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Función PL/SQL

Código SQL:
Ver original
  1. CREATE OR REPLACE FUNCTION MAX3
  2.  
  3. (n1 NUMBER, n2 NUMBER, n3 NUMBER)
  4.  
  5. RETURN NUMBER
  6.  
  7. IS
  8.  
  9. m NUMBER;
  10. maximo NUMBER;
  11.  
  12. BEGIN
  13.  
  14. IF n1>=n2
  15.  
  16.     THEN
  17.  
  18.         m:=n1;
  19.  
  20.     ELSE
  21.  
  22.         m:=n2;
  23.  
  24. END IF;
  25.  
  26. IF m>=n3
  27.  
  28.     THEN
  29.  
  30.         maximo:=m;
  31.  
  32.     ELSE
  33.         maximo:=n3;
  34.  
  35. END IF;
  36.  
  37. RETURN maximo;
  38.  
  39. END;

Solo quita el primer return.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 16/12/2013, 11:30
 
Fecha de Ingreso: octubre-2013
Ubicación: Castellón de la Plana
Mensajes: 9
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Función PL/SQL

Gracias por tu aportación huesos52, finalmente lo resolví de la siguiente manera:

Código MySQL:
Ver original
  1.  
  2. (n1 number, n2 number, n3 number)
  3.  
  4. RETURN number
  5.  
  6.  
  7.  
  8. m number;
  9.  
  10.  
  11. IF n1>=n2
  12.  
  13.      THEN
  14.  
  15.             m:=n1;
  16.  
  17.      ELSE
  18.  
  19.             m:=n2;
  20.  
  21.  
  22. IF m>=n3
  23.  
  24.       THEN
  25.  
  26.            m:=m;
  27.  
  28.       ELSE
  29.  
  30.            m:=n3;
  31.  
  32.  
  33. RETURN m;
  34.  

Saludos ...

Etiquetas: pl-sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:47.