Retroceder   Foros del Web > Programación para sitios web > Bases de Datos > PostgreSQL

Respuesta
 
Herramientas Desplegado
Antiguo 23-abr-2008, 11:56   #1 (permalink)
dark_monk9 ha deshabilitado el karma
 
Fecha de Ingreso: mayo-2007
Mensajes: 25
Error en funcion almacenada para insertar datos a tabla

Wenas de nuevo!!!!
Tengo el siguiente inconveniente, cree una funcion que se supone me debe llenar los datos de una tabla, la funcion se almacena sin ningun error, pero el problema viene cuando la invoco para mandarle los datos por parametros.

La tabla es la siguiente:

tabla metactividad

idindicadoresespecificos int8 Primary Key
idactividad varchar
unidadmedida varchar
meta numeric
descripcion varchar

-------- Esta es la funcion---------

CREATE OR REPLACE FUNCTION anadir_metactividad(IN idindicadoresespecif INT, IN idactivid VARCHAR, IN unidadmed VARCHAR, IN meta NUMERIC, IN descripc VARCHAR) RETURNS void AS
$BODY$
BEGIN
INSERT INTO beneficiario VALUES (idindicadoresespecif, dactivid, unidadmed, meta, descripc);
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;

/-----------------------

De esa forma la invoco

select anadir_metactividad(5,'666','777',121,'333')
FROM metactividad;

/----------------------

Y me salen estos errores:

ERROR: duplicate key violates unique constraint "metactividad_pkey"
CONTEXT: SQL statement "INSERT INTO metactividad VALUES ( $1 , $2 , $3 , $4 , $5 )"
PL/pgSQL function "anadir_metactividad" line 2 at SQL statement


Lo que me parece extraño es que me diga que intento duplicar la llave primaria, sabiendo que los datos que estoy mandando no existen en la tabla.

La funcion se supone debe recibir los datos de donde la invoco para de esta forma llenar la tabla, pero la verdad no se que estoy haciendo mal.


Gracias a todos!!!!!!!!
dark_monk9 está desconectado   Responder Citando
Antiguo 24-abr-2008, 06:07   #2 (permalink)
seyko ha deshabilitado el karma
 
Fecha de Ingreso: febrero-2007
Mensajes: 974
Re: Error en funcion almacenada para insertar datos a tabla

select anadir_metactividad(5,'666','777',121,'333')
FROM metactividad;

el fallo es el FROM. Llama a la funcion solo con select anadir_metactividad(5,'666','777',121,'333');
Al llamar con el from la llama una vez por cada registro que tengas en esa tabla.


Un par de consejos:
INSERT INTO beneficiario VALUES (idindicadoresespecif, dactivid, unidadmed, meta, descripc);
es aconsejable poner los campos en insert into tabla (c1, c2, ...) values....

Captura excepciones dentro de la funcion.

Un saludo
seyko está desconectado   Responder Citando
Antiguo 24-abr-2008, 12:58   #3 (permalink)
dark_monk9 ha deshabilitado el karma
 
Fecha de Ingreso: mayo-2007
Mensajes: 25
Re: Error en funcion almacenada para insertar datos a tabla

Gracias por la ayuda y por los consejos, funciono sin problema!!!!
dark_monk9 está desconectado   Responder Citando
Respuesta
Calificación: Calificación de Tema: 1 votos, 5,00 de promedio.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 01:28.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93