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

Procedimiento Almacenado (Funcion)

Estas en el tema de Procedimiento Almacenado (Funcion) en el foro de PostgreSQL en Foros del Web. Muy Buen dia , soy nuevo en postgresql y pues necesito realizar una funcion , procedimiento almacenado, pero la verdad no he encontrado precisamente lo ...
  #1 (permalink)  
Antiguo 10/08/2012, 11:37
 
Fecha de Ingreso: julio-2012
Ubicación: Bogota
Mensajes: 7
Antigüedad: 12 años, 5 meses
Puntos: 0
Pregunta Procedimiento Almacenado (Funcion)

Muy Buen dia , soy nuevo en postgresql y pues necesito realizar una funcion , procedimiento almacenado, pero la verdad no he encontrado precisamente lo que necesito.


Tengo la siguiente sentencia en PHP

Código:
$sql = "
        SELECT * FROM  t_tercero t 
        JOIN t_tipos ti USING (idtipo)
        WHERE
            ti.grupo = 't_vendedores'
        ";
        if($idpunto_venta)
            {
                 $sql.=" AND t.idpunto_venta = $idpunto_venta";
             }
        if($idtipo_vendedor)
           {
                 $sql.=" AND ti.idtipo = $idtipo_vendedor";
           }
        "
Estoy haciendo este codigo en php y pues quisiera saber como hacer estas condiciones dentro del procedimiento ; digamos si existe el punto de venta en el where coloca and t.idpunto_venta = $idpunto_venta";


Espero que porfavor me puedan ayudar ya que llevo un buen rato consultando esto.
Saludos desde Bogota Colombia.
  #2 (permalink)  
Antiguo 12/08/2012, 17:01
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 10 meses
Puntos: 360
Respuesta: Procedimiento Almacenado (Funcion)

Hola

Mira este tema:
http://www.forosdelweb.com/f99/sql-d...-pgsql-754586/

ahi explico una función dinamica de parametros.


saludos también desde Bogotá
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 13/08/2012, 07:54
 
Fecha de Ingreso: julio-2012
Ubicación: Bogota
Mensajes: 7
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Procedimiento Almacenado (Funcion)

Muchas Muchas Gracias, Ya mismo me pondré a mirar ese tema .
  #4 (permalink)  
Antiguo 13/08/2012, 09:33
 
Fecha de Ingreso: julio-2012
Ubicación: Bogota
Mensajes: 7
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Procedimiento Almacenado (Funcion)

Hola Huesos de nuevo muchas gracias por tu respuesta, pues me funciono bastante ese tema, y llegue hasta este codigo ,

Código SQL:
Ver original
  1. CREATE OR REPLACE FUNCTION terceros_id(id INTEGER) RETURNS SETOF tbl_terceros AS $$
  2. DECLARE
  3.     datos tbl_terceros%rowtype;
  4.     SQL TEXT := 'SELECT  * FROM tbl_terceros';
  5.     sqlId TEXT;
  6. BEGIN
  7.     IF ( id IS NOT NULL ) THEN
  8.         SQL = SQL || ' WHERE idtercero=$1';
  9.     END IF;
  10.     FOR datos IN EXECUTE SQL USING id LOOP
  11.                RETURN NEXT datos;
  12.     END LOOP;
  13.     RETURN;
  14. END
  15. $$ LANGUAGE plpgsql VOLATILE;


Y todo muy bien Pero , Cuando cambie el select * por un select nombre , apellido y lo ejecuto
me sale el siguiente error


ERROR: la sintaxis de entrada no es válida para el tipo numeric: «LILIANA»
CONTEXT: PL/pgSQL function "terceros_id" line 9 at bucle FOR en torno a una sentencia EXECUTE

y pues llego un buen rato y no he podido pasar de esto

Es posible que me puedas ayudar?
  #5 (permalink)  
Antiguo 13/08/2012, 09:49
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 10 meses
Puntos: 360
Respuesta: Procedimiento Almacenado (Funcion)

Fijate en esta declaración
datos tbl_terceros%rowtype;

Lo que le estas diciendo es que es de tipo row. Osea todos los campos de la tabla. Cuando cambias la consulta, el cursor toma 2 o 3 campos pero está esperando todo el registro.

Creo que si quitas la declaración del rowtype te funcionaría sin problemas

nos cuentas



Saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #6 (permalink)  
Antiguo 13/08/2012, 11:02
 
Fecha de Ingreso: julio-2012
Ubicación: Bogota
Mensajes: 7
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Procedimiento Almacenado (Funcion)

Hola Huesos,
Muchas gracias por tu respuesta :)
hice tal como me dijiste , pero sigo con el mismo error cuando lo ejecuto asi
Código SQL:
Ver original
  1. SELECT * FROM terceros_id(1);

pero cuando lo ejecuto asi

Código SQL:
Ver original
  1. SELECT nombres , apellidos FROM terceros_id(1);

funciona bien y trae los datos que son , no se que optimizado sea dejarlo de esa forma .

Saludos.
De nuevo muchas gracias.

Última edición por jorgeliche; 13/08/2012 a las 11:13

Etiquetas: funciones, postgre, procedimiento
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 02:18.