文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

PostgreSQL创建函数中的选项是什么

2024-04-02 19:55

关注

这篇文章主要介绍“PostgreSQL创建函数中的选项是什么”,在日常操作中,相信很多人在PostgreSQL创建函数中的选项是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PostgreSQL创建函数中的选项是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

Create Function的语法如下:

[pg12@localhost ~]$ psql
Expanded display is used automatically.
psql (12.2)
Type "help" for help.
[local:/data/run/pg12]:5120 pg12@testdb=# \help create function
Command:     CREATE FUNCTION
Description: define a new function
Syntax:
CREATE [ OR REPLACE ] FUNCTION
    name ( [ [ argmode ] [ argname ] argtype [ { DEFAULT | = } default_expr ] [, ...] ] )
    [ RETURNS rettype
      | RETURNS TABLE ( column_name column_type [, ...] ) ]
  { LANGUAGE lang_name
    | TRANSFORM { FOR TYPE type_name } [, ... ]
    | WINDOW
    | IMMUTABLE | STABLE | VOLATILE | [ NOT ] LEAKPROOF
    | CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT
    | [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER
    | PARALLEL { UNSAFE | RESTRICTED | SAFE }
    | COST execution_cost
    | ROWS result_rows
    | SUPPORT support_function
    | SET configuration_parameter { TO value | = value | FROM CURRENT }
    | AS 'definition'
    | AS 'obj_file', 'link_symbol'
  } ...
URL: https://www.postgresql.org/docs/12/sql-createfunction.html
[local:/data/run/pg12]:5120 pg12@testdb=#

LANGUAGE
包括sql,c,internal,plpgsql等等

TRANSFORM
该选项列出调用函数时应使用的transform.
transform说明了如何转换数据类型到一种编程语言.比如使用hstore类型通过PL/Python语言来编写函数,
PL/Python无法在Python语言环境中标识hstore类型的数据.语言默认使用文本,但如果出现数组或者链表,
这种默认处理就不合适了.
transform指定了两种函数:
“from SQL”:从SQL环境到编程语言.该函数在使用该语言编写的函数时对参数进行处理.
“to SQL”:从编程语言到SQL环境.处理返回值时调用.
该选项用于PL/Java等编程语言中.

WINDOW
使用该选项,标明该函数是窗口函数(window function)而不是普通函数.

IMMUTABLE | STABLE | VOLATILE
这三个会影响查询优化器.默认选项是VOLATILE.
IMMUTABLE:表示函数不能更改数据库并且给定什么参数就返回什么值,100%的确定性.
STABLE:表示函数不能更改数据库,在一次表扫描过程中,对于同样的参数会返回相同的结果,但结果可以在SQL语句之间改变.
结果如果依赖于数据库查找,参数变量可变时可使用该选项.
VOLATILE:在一次表扫描时,结果也可以改变.如random(),currval()函数等.

LEAKPROOF
该选项表示函数不存在副作用.除了返回值,不会reveals参数的相关信息,比如如果因为某些参数值抛出错误信息,
或者在错误信息中包含参数值,那么该函数被不是leafproof.
该选项会影响以security_barrier选项创建的view或者启用row level security的数据表.
系统将在用户提供的包含non-leakproof函数的条件之前执行来自安全策略的条件和来自查询本身的安全屏障视图,以防止数据的意外泄漏.
标记为leakproof的函数和操作符被认为是可信的,可以在安全策略和安全屏障视图的条件之前执行。

CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT
默认选项为CALLED ON NULL INPUT,表示如某些参数为null函数可以正常调用.函数的编写者有责任检查null值.
RETURNS NULL ON NULL INPUT | STRICT表示如果出现参数为null,则返回null.

SECURITY INVOKER | SECURITY DEFINER
SECURITY INVOKER表示以调用者的权限执行函数,这是默认选项.SECURITY DEFINER则表示以owner的权限执行函数.

PARALLEL UNSAFE | RESTRICTED | SAFE
PARALLEL UNSAFE表示不能以并行模式执行函数,如在SQL中出现该函数则需串行执行,这是默认选项.
PARALLEL RESTRICTED表示函数可以并行模式执行,但执行者限制为并行组的leader.
PARALLEL SAFE表示无约束的并行执行.
如函数修改了数据库状态或者使用子事务修改了事务状态或者尝试访问序列或者改变设置(如setval),那么函数应标记为unsafe.
如函数访问临时表,客户端连接状态,游标,预准备语句或者系统无法以并行模式同步的后端本地状态,那么应标记为restricted.
如函数实际上unsafe但标记为safe,那么会产生不可预知的错位.

COST
函数执行的估算成本,单位为cpu_operator_cost.

ROWS
函数返回的估算行数.

SUPPORT
该函数使用的planner support function.

SET
进入该函数时,设置配置参数为指定的值,执行完毕则恢复为原来的参数值.

AS
函数定义.

到此,关于“PostgreSQL创建函数中的选项是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯