我正在PostgreSQL中创建一个存储过程,但在“更新”处或附近出现了一个错误“语法错误”
我正在创建一个存储过程来更改电子邮件地址,但我不断收到一个错误 错误:更新时或更新附近出现语法错误我正在PostgreSQL中创建一个存储过程,但在“更新”处或附近出现了一个错误“语法错误”,sql,postgresql,stored-procedures,Sql,Postgresql,Stored Procedures,我正在创建一个存储过程来更改电子邮件地址,但我不断收到一个错误 错误:更新时或更新附近出现语法错误 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
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');
让我们试试看:
# INSERT INTO accounts VALUES(1, 'John', 'Doe', 'djohn@example.com', '*********');
INSERT 0 1
# SELECT change_account_email('djohn@example.com', 'new@example.com');
change_account_email
----------------------
1
(1 row)
# SELECT * FROM accounts;
a_id | a_first_name | a_last_name | a_email | a_password
------+--------------+-------------+-----------------+------------
1 | John | Doe | new@example.com | *********
(1 row)
这是演示好的。对不起,我是新来的。再次感谢你!