PostgreSQL函数中的语言sql和语言plpgsql的区别
在数据库开发方面非常新,所以我对以下示例有一些疑问:
函数f1() – 语言sql create or replace function f1(istr varchar) returns text as $$ select 'hello! '::varchar || istr; $$language sql; 函数f2() – 语言plpgsql create or replace function f2(istr varchar) returns text as $$ begin select 'hello! '::varchar || istr; end; $$language plpgsql; >这两个函数都可以像选择f1(‘world’)或者选择f2(‘world’)一样调用. `hello! world` >输出为f2(‘world’):
>我想知道差异,在哪种情况下我应该使用语言sql或语言plpgsql. 关于功能的任何有用的链接或答案将不胜感激.
SQL functions
是更好的选择: 对于简单的标量查询没有太多的计划,更好地节省任何开销. PL/pgSQL functions 是更好的选择: >当您需要任何SQL函数中不可用的过程元素或变量时,显然. > Postgres functions vs prepared queries >当您有几个可以在多个地方重复使用的计算,并且CTE无法伸缩时.在SQL函数中,您没有变量,将被强制重复计算或写入表. dba.SE中的相关答案具有并行代码示例,用于使用SQL函数/ plpgsql函数/具有CTE的查询来解决相同的问题: > How to pass a parameter into a function 作业比其他程序语言要贵一些.调整不需要使用更多分配的编程风格. 还要考虑: > PostgreSQL Stored Procedure Performance (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |