Tôi đang cố gắng sử dụng một hàm với PostgreSQL để lưu một số dữ liệu. Đây là kịch bản tạo:Cách gọi một hàm, 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;
PostreSQL Tài liệu tuyên bố rằng để gọi hàm không trả về bất kỳ kết quả nào, chỉ có thể viết tên và thuộc tính của nó. Vì vậy, tôi cố gắng gọi hàm như thế này:
"saveUser"(3, 'asd','asd','asd','asd','asd');
Nhưng tôi nhận được báo lỗi dưới đây:
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
tôi có các chức năng khác mà trả về một resultset. Tôi sử dụng SELECT * FROM "fnc"(...)
để gọi cho họ và nó hoạt động. Tại sao tôi nhận được lỗi này?
EDIT: Tôi đang sử dụng công cụ pgAdmin III Query và cố gắng để thực hiện các câu lệnh SQL ở đó.
Sử dụng điều này, tôi gặp lỗi; "LRI: truy vấn không có đích cho dữ liệu kết quả". Tôi tự hỏi nếu lỗi này có một cái gì đó để làm với tôi muốn trả lại một boolean? –
Tôi đã thử điều này với một hàm khác trả về void và nó hoạt động, nhưng nếu tôi muốn trả về boolean thì sao? –
Erkan: Đã thử kết hợp hai câu trả lời? I E. lời gọi của bạn là sai, và bạn không trả lại bất cứ điều gì cho một hàm được kỳ vọng trả về bool. Hơn nữa, tại sao bạn lại có số nhận dạng chữ hoa chữ thường phải báo giá mọi lúc? –