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.