在postgresql中调用Update函数

时间:2014-03-27 03:34:47

标签: postgresql plpgsql

我正在尝试创建一个更新用户密码的函数。这是我的功能。

CREATE OR REPLACE FUNCTION update_user(userid int, upassword text) RETURNS integer AS  $$
    BEGIN
 UPDATE tbl_user 
     SET password= upassword 
 WHERE user_id = userid;
 SELECT 1;
 END;
 $$
 LANGUAGE plpgsql;

我尝试使用。

执行此功能
SELECT update_user(1, 'test');

我收到错误

ERROR:  control reached end of function without RETURN CONTEXT:  PL/pgSQL function

我不知道哪里出错了。请帮帮我。我是创建功能的新手。提前谢谢。

1 个答案:

答案 0 :(得分:2)

每个PL / pgSQL函数都需要RETURN语句。但在您的情况下,您可以使用SQL语言函数:

CREATE OR REPLACE FUNCTION update_user(userid int, upassword text) RETURNS void AS $$
  UPDATE tbl_user 
    SET password = upassword 
    WHERE user_id = userid;
$$ LANGUAGE sql;

只有当您需要进行更精细的处理(例如,使用局部变量,处理逻辑或触发器)时,您才需要PL / pgSQL函数。