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