I'我在PostgreSQL中创建了一个存储过程,但我得到了一个错误'语法错误在或接近“0”;“更新”&




我正在创建一个更改电子邮件地址的存储过程,但我一直收到一个错误。

错误:在"UPDATE"处或附近出现语法错误

CREATE FUNCTION change(
IN oldAddr VARCHAR(50),
IN newAddr VARCHAR(50)
) AS
UPDATE accounts
SET a_email = newAddr
WHERE a_email = oldAddr;

我从课本上抄了这个,但我认为它在PostgreSQL上不起作用
请教我如何改正!非常感谢。

CREATE TABLE accounts (
a_id int NOT NULL PRIMARY KEY,
a_first_name varchar(25) NOT NULL,
a_last_name varchar(25) NOT NULL,
a_email varchar(50) NOT NULL,
a_password varchar(16) NOT NULL
);

这样试试

CREATE OR REPLACE FUNCTION change_account_email(
  IN oldAddr VARCHAR(50),
  IN newAddr VARCHAR(50))
RETURNS INTEGER AS 
$$
DECLARE
  rcount INTEGER DEFAULT 0;
BEGIN
  UPDATE accounts
     SET a_email = newAddr
   WHERE a_email = oldAddr;
   GET DIAGNOSTICS rcount = ROW_COUNT;
   RETURN rcount;
END;
$$
LANGUAGE plpgsql;

示例用法:

SELECT change_account_email('djohn@example.com', 'new@example.com');

让我们试试:

#插入账户价值(1,'John','Doe','djohn@example.com','*********');插入0 1#选择change_account_email('djohn@example.com','new@example.com');更改帐户电子邮件----------------------1.(1排)#从帐户中选择*;a_id|a_first_name|a_flast_name|a_email|a_password------+--------------+-------------+-----------------+------------1|John | Doe |new@example.com|*********(1排)

这是SQLFiddle演示

相关内容

最新更新