postgresql函数创建
postgresql的函数创建
1.创建函数的基本语法:
CREATE [OR REPLACE] FUNCTION function_name(parameter_list)
RETURNS return_type AS $$
BEGIN -- 函数体
END;
$$ LANGUAGE language_name;
2.创建函数时传入参数示例:add_user
tbl_user表
| id | username | password | createat |
创建add_user
函数并传入username,password,返回result,userid和createat
CREATE [OR REPLACE] FUNCTION add_user(IN username VARCHAR(30),IN password VARCHAR(30))
RETURNS TABLE(result BOOLEAN,userid INT,createat TIMESTAMP
) AS $$
BEGINBEGIN-- 插入新用户记录,返回id和create_at--自动生成的id和create_at会被插入到myuserid和INSERT INTO tbl_user(username,password) VALUES (username,password) RETURNING id,create_at INTO myuserid,mycreateat; mycreateat中--函数执行成功时的查询结果RETURN QUERY SELECT true,myuserid,mycreateat;EXCEPTIONWHEN OTHERS THEN--函数执行失败时的查询结果RETURN QUERY SELECT FALSE, NULL, NULL;END;
END;
$$ LANGUAGE plpgsql
3.获取整个用户列表示例: get_all_users
CREATE [OR REPLACE] FUNCTION get_all_users()
RETURNS SETOF tbl_user AS $$
BEGINRETURN QUERY SELECT * FROM tbl_user;
END;
$$ LANGUAGE plpgsql
注意:
RETURNS TABLE() 可以设置返回记录的结构,并且可以返回多条记录
RETURNS SETOF 可以返回多条记录,但是不能自定义返回记录的结构
4.条件判断
IF语句
IF condition THEN -- 当条件为真时执行的语句 statement1;
ELSE -- 当条件为假时执行的语句 statement2;
END IF;
IF ELSEIF 语句
IF condition1 THEN statement1;
ELSE IF contition2 THENstatement2;
ELSEstatement3;
END IF;
5.异常处理
BEGIN--需要进行异常判断的部分
EXCEPTION
WHEN OTHERS THEN--异常时执行的部分
END;