Estoy tratando de usar una función con PostgreSQL para guardar algunos datos. Aquí está el script de creación:Cómo llamar a una función, PostgreSQL
-- Function: "saveUser"(integer, character varying, character varying, character varying, character varying, character varying)
-- DROP FUNCTION "saveUser"(integer, character varying, character varying, character varying, character varying, character varying);
CREATE OR REPLACE FUNCTION "saveUser"("pUserID" integer, "pName" character varying, "pLastName" character varying, "pUserName" character varying, "pPassword" character varying, "peMail" character varying)
RETURNS boolean AS
$BODY$
BEGIN
SELECT 1
FROM "USERS"
WHERE "userID" = $1;
IF FOUND THEN
UPDATE "USERS"
SET "name" = $2,
"lastName" = $3,
"userName" = $4,
"password" = $5,
"eMail" = $6
WHERE "userID" = $1;
ELSE
INSERT INTO "USERS"
("name", "lastName", "userName", "password", "eMail")
VALUES
($2, $3, $4, $5, $6);
END IF;
END;$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;
ALTER FUNCTION "saveUser"(integer, character varying, character varying, character varying, character varying, character varying) OWNER TO postgres;
estados de documentación PostreSQL que llamar a una función que no devuelve ningún conjunto de resultados, es suficiente para escribir sólo su nombre y sus propiedades. Así que trato de llamar a la función como esta:
"saveUser"(3, 'asd','asd','asd','asd','asd');
pero me sale el error abajo:
ERROR: syntax error at or near ""saveUser""
LINE 1: "saveUser"(3, 'asd','asd','asd','asd','asd')
^
********** Error **********
ERROR: syntax error at or near ""saveUser""
SQL state: 42601
Character: 1
tengo otras funciones que devuelven un conjunto de resultados. Yo uso SELECT * FROM "fnc"(...)
para llamarlos y funciona. ¿Por qué recibo este error?
EDIT: estoy usando la herramienta de consulta pgAdmin III y tratando de ejecutar las sentencias SQL allí.
Usando esto, obtengo el error; "ERROR: la consulta no tiene destino para los datos de resultados". Me pregunto si este error tiene algo que ver conmigo que quiero devolver un booleano. –
Intenté esto con otra función que devuelve vacío y funciona, pero ¿y si quisiera devolver un booleano? –
Erkan: ¿Intentó combinar las dos respuestas? Es decir. su invocación es incorrecta, y no está devolviendo nada para una función que se espera que vuelva bool. Además, ¿por qué tiene identificadores de casos mixtos que tiene que citar todo el tiempo? –