Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我正在PostgreSQL中创建一个存储过程,但在“更新”处或附近出现了一个错误“语法错误”_Sql_Postgresql_Stored Procedures - Fatal编程技术网

我正在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)
这是演示

好的。对不起,我是新来的。再次感谢你!