我正在PostgreSQL中创建一个存储过程,但出现错误“在“ UPDATE”处或附近有语法错误”。

 菠萝97 发布于 2023-02-11 16:22


我正在创建一个更改电子邮件地址的存储过程,但始终出现错误。

错误:“ 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
);

peterm.. 6

这样尝试

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

让我们尝试一下:

#INSERT INTO帐户VALUES(1,'John','Doe','djohn@example.com','*********');
插入0 1

#选择change_account_email('djohn@example.com','new@example.com');
 change_account_email 
----------------------
                    1个
(1列)

#SELECT * FROM帐户;
 a_id | a_first_name | a_last_name | a_email | 密码
------ + -------------- + ------------- + -------------- --- + ------------
    1 | 约翰| 美国能源部 new@example.com | *********
(1列)

这是SQLFiddle演示

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有