【问题标题】:I'm creating a stored procedure in PostgreSQL, but I get an error 'syntax error at or near "UPDATE"'我正在 PostgreSQL 中创建一个存储过程,但我得到一个错误'在“更新”或附近出现语法错误'
【发布时间】:2013-12-11 04:02:11
【问题描述】:


我正在创建一个更改电子邮件地址的存储过程,但我不断收到错误消息。

错误:“更新”处或附近的语法错误

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

【问题讨论】:

    标签: sql postgresql stored-procedures


    【解决方案1】:

    试试这个方法

    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 行) # SELECT * FROM 账户; a_id | a_first_name |姓氏| a_email | a_password ------+--------------+--------------+-------------- ---+------------ 1 |约翰 |能源部 |新@example.com | ********* (1 行)

    这里是SQLFiddle演示

    【讨论】:

    • 好的。对不起,我是新来的。再次感谢您!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-02
    • 1970-01-01
    • 2020-12-26
    • 2021-10-22
    • 2017-12-21
    • 1970-01-01
    • 2017-03-16
    相关资源
    最近更新 更多