所以这个问题的评论提到,PostgreSQL 中的“存储过程”和“存储功能”略有不同。
评论链接到维基百科文章,但其中一些似乎并不适用(例如,它们可以在SELECT声明中使用)。
该语法本身似乎有点混乱:
CREATE FUNCTION emp_stamp() RETURNS trigger AS $emp_stamp$
BEGIN
[...]
END;
$emp_stamp$ LANGUAGE plpgsql;
CREATE TRIGGER emp_stamp BEFORE INSERT OR UPDATE ON emp
FOR EACH ROW EXECUTE PROCEDURE emp_stamp();
Run Code Online (Sandbox Code Playgroud)
您创建了一个FUNCTION但将其称为PROCEDURE.
那么这两者有什么区别呢?
在 Postgres 中,准备好的查询和用户定义的函数是否等同于一种防止 SQL 注入的机制?
一种方法比另一种方法有什么特别的优势吗?
postgresql sql-injection prepared-statement plpgsql functions