1. ホーム
  2. postgresql

関数の呼び出し方, PostgreSQL

2023-09-04 20:12:03

質問

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のドキュメントによると、結果セットを返さない関数を呼び出すには、その名前とプロパティだけを書けば十分だそうです。そこで、このように関数を呼び出してみます。

"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');