我正在try 使用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文档指出,要调用不返回任何resultset的函数,只写其名称和属性就足够了.所以我试着这样调用函数:

"saveUser"(3, 'asd','asd','asd','asd','asd');

但我得到的错误如下:

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

我还有其他返回结果集的函数.我用SELECT * FROM "fnc"(...)给他们打电话,效果很好.为什么我会犯这个错误?


EDIT:我正在使用pgAdmin III查询工具,并试图在那里执行SQL语句.

推荐答案

函数调用仍然应该是有效的SQL语句:

SELECT "saveUser"(3, 'asd','asd','asd','asd','asd');

Postgresql相关问答推荐

转换失败:(—122.763091,49.04676)转换为地理(位置)""

如何在PostgreSQL中对深度嵌套的jsonb属性创建索引

使用postgres在go测试容器中使用tern迁移

PL/pgSQL中的IP递增函数

带有附加组的时间刻度 interpolated_average

为什么不能超过 10 个并发连接到 Postgres RDS 数据库

PostgreSQL - 如何获得前一个月和一周的价值?

如何将两条线几何连接成一条记录?

使用 Heroku CLI、Postgres 的 SQL 语法错误

Postgres中的GROUP BY - JSON数据类型不相等?

使用 try/except 与 psycopg2 或with closing?

如何在可选参数上查询 postgres?

MAC OS X 上的 Postgres 权限被拒绝

SQLAlchemy 和多个进程的连接问题

如何使用 postgresql 中的存储过程将数据插入表中

SQL - 提示引用列

由于外键约束无法删除对象

如何使用 WITH RECURSIVE 子句进行 Select

防止 PostgreSQL 中的递归触发器

如何在 postgres 查询中排名