• Jueves 26 de Noviembre de 2020, 20:08

Autor Tema:  Problema con invocar una funcion en postgres  (Leído 1216 veces)

mcastro

  • Nuevo Miembro
  • *
  • Mensajes: 17
    • Ver Perfil
Problema con invocar una funcion en postgres
« en: Miércoles 21 de Agosto de 2013, 14:54 »
0
Buenas tardes amigos de SOLOCODIGO.
Necesito ayuda en PLPGSQL.
Tengo la siguiente función:
CREATE OR REPLACE FUNCTION fncprueba_incluir_concesionario(pardescripcion text)
  RETURNS text AS
$BODY$
            declare
               sql text;
            begin
               sql = 'insert into nconcesionario (descripcion) values (' || pardescripcion || ')';

               execute fncvalidar_excepciones(sql);
                           
            end;
            $BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;

  Cuando llamo desde esta función a fncvalidar_excepciones(sql) como se puede ver en el código me arroja el siguiente error:

ERROR:  no existe la columna «xxxxxxxxxx»
LINE 1: insert into nconcesionario (descripcion) values (xxxxxxxxxx)
                                                         ^
QUERY:  insert into nconcesionario (descripcion) values (xxxxxxxxxx)
CONTEXT:  PL/pgSQL function fncvalidar_excepciones(text) line 3 at sentencia EXECUTE.

La función que estoy tratando de llamar en la siguiente:

CREATE OR REPLACE FUNCTION fncvalidar_excepciones(sql text)
  RETURNS text AS
$BODY$
            begin
               execute sql;

                    return true;
               
                    /*
                      Verifico que no haya violación de claves foráneas,
                      ni de valores nulos o únicos al incluir el registro
                    */
               exception
                  when foreign_key_violation then
                       return 1;

                  when not_null_violation    then
                       return 2;
                       
                  when unique_violation      then
                       return 3;
                       
                  when check_violation       then
                       return 4;   
            end;
            $BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;

La tabla NCONCESIONARIO tiene estos 2 campos: idconcesionario (serial) y descripcion (character varying);
¿Me pudieran explicar el por qué del error? ¿qué debo corregir y donde?
Gracias de antemano por el apoyo.

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re:Problema con invocar una funcion en postgres
« Respuesta #1 en: Miércoles 21 de Agosto de 2013, 17:34 »
0
No repitas los mensajes.

Si tienes algo que añadir a tu pregunta, haslo en tu mensaje original.

Si nadie te contesta, es muy probable que se deba a que nadie sabe la respuesta (en mi caso no la se porque no trabajo con PostgreSQL)

Saludos :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================