What is the difference between prepared statements and SQL or PL/pgSQL functions, in terms of their purpose?

前端 未结 1 907
日久生厌
日久生厌 2021-01-01 23:47

In PostgreSQL, what is the difference between a prepared statement and a SQL or PL/pgSQL function, in terms of their purposes, advantages and disadvantages? When shall we us

相关标签:
1条回答
  • 2021-01-02 00:18

    All three "work the same" in that they execute the simple SQL statement:

    INSERT INTO foo VALUES (3, 'ben');
    

    The prepared statement is only good for a single prepared SQL statement (as the name suggests). And only DML commands. The manual:

    Any SELECT, INSERT, UPDATE, DELETE, or VALUES statement.

    Functions can contain any number of statements. DML and DDL. Only SQL for SQL functions. Plus some non-SQL procedural elements in PL/pgSQL.

    The prepared statement is only visible inside the same session and gone at the end of the session, while the functions persist and are visible to all - still only usable for those with the EXECUTE privilege.

    The prepared statement is encumbered with the least overhead. (Not much difference.)

    The SQL function is the only one of the three that cannot save the query plan (by itself). Read details about plan caching in PL/pgSQL functions in the manual here.

    The SQL function is also the only one that could be inlined when used within a bigger query. (Not with an INSERT, though.)

    A rather comprehensive list of differences between SQL and PL/pgSQL functions:

    • Difference between language sql and language plpgsql in PostgreSQL functions

    Starting with Postgres 11 there are also SQL procedures:

    • When to use stored procedure / user-defined function?
    0 讨论(0)
提交回复
热议问题