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

problema con parametro de una funcion

Estas en el tema de problema con parametro de una funcion en el foro de PostgreSQL en Foros del Web. tengo que hacer el siguiente ejercicio = 6.- Crear un procedimiento llamado "sueldototal" que reciba el documento de un empleado y muestre su nombre, apellido ...
  #1 (permalink)  
Antiguo 19/03/2013, 04:31
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 14 años, 11 meses
Puntos: 1
problema con parametro de una funcion

tengo que hacer el siguiente ejercicio =

6.- Crear un procedimiento llamado "sueldototal" que reciba el documento de un empleado y muestre su nombre, apellido y el sueldo total (resultado de la suma del sueldo y salario por hijo, que es de 200€ si el sueldo es menor a 1000€ y 100€, si el sueldo es mayor o igual a 1000€). Colocar como valor por defecto para el parámetro el patrón "%".

pero para = Colocar como valor por defecto para el parámetro el patrón "%".

para poner por defecto el patron "%" no se como hacerlo!!!

os dejo el codigo de como tengo la funcion ahora.

("la definicion del parametro me da error" empleado default "%")

Código postgresql:
Ver original
  1. CREATE OR REPLACE FUNCTION sueldototal(empleado default "%") RETURNS TEXT AS $$
  2.     DECLARE salida TEXT = '';
  3.         row_data empleado%ROWTYPE;
  4.         salario_hijo  INT = 200;
  5.         salario_hijo2  INT = 100;
  6.         cantidad_sueldototal int;
  7.     BEGIN
  8.         FOR row_data IN SELECT * FROM empleado WHERE documento = empleado LOOP
  9.             if(row_data.sueldo < 1000) THEN
  10.             cantidad_sueldototal = row_data.sueldo + (salario_hijo * row_data.cantidadhijos) ;
  11.             salida = row_data.nombre || ' ' || row_data.apellido || ' ' || cantidad_sueldototal ;
  12.             end if;
  13.             if (row_data.sueldo >= 1000) THEN
  14.             cantidad_sueldototal = row_data.sueldo + (salario_hijo2 * row_data.cantidadhijos);
  15.             salida =  row_data.nombre || ' ' || row_data.apellido || ' ' || cantidad_sueldototal ;
  16.             end if;
  17.         END LOOP;
  18.         RETURN salida;
  19.     END;
  20.  
  21. $$ LANGUAGE plpgsql;
  #2 (permalink)  
Antiguo 23/03/2013, 22:42
 
Fecha de Ingreso: octubre-2010
Mensajes: 83
Antigüedad: 13 años, 5 meses
Puntos: 4
Respuesta: problema con parametro de una funcion

Te falta el data type de empleado.
  #3 (permalink)  
Antiguo 25/03/2013, 07:40
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: problema con parametro de una funcion

snahor, sigue sin funcionarme.... lo que tu me as dicho es esto? = sueldototal(empleado.documento%type default "%") ????

pero me da error con "%".....
  #4 (permalink)  
Antiguo 25/03/2013, 14:23
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: problema con parametro de una funcion

Rufus no es eso lo que te falta.

Ahora tienes el tipo pero no el parametro.
sueldototal(variable empleado.documento%type default "%")

donde variable es el parametro y es del mismo tipo del campo documento de la tabla empleado.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 25/03/2013, 14:52
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: problema con parametro de una funcion

no puedo crear la funcion me da este error (ya le e puesto el parametro)

dime por favor que sigo haciendo mal....

CREATE OR REPLACE FUNCTION sueldototal( docu empleado.documento%type default "%")

este es el error:

NOTICE: la referencia al tipo empleado.documento%TYPE convertida a integer


ERROR: no existe la columna «%»
LINE 1: ...dototal( variable empleado.documento%type default "%") RETUR...
^

Etiquetas: as, funcion, parametro, valor
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 16:38.