我正在创建一个更改电子邮件地址的存储过程,但我一直收到一个错误。
错误:在"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演示