返回顶部
首页 > 资讯 > 数据库 >PostgreSQL创建函数中的选项是什么
  • 395
分享到

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

2024-04-02 19:04:59 395人浏览 八月长安
摘要

这篇文章主要介绍“postgresql创建函数中的选项是什么”,在日常操作中,相信很多人在Postgresql创建函数中的选项是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解

这篇文章主要介绍“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创建函数中的选项是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

您可能感兴趣的文档:

--结束END--

本文标题: PostgreSQL创建函数中的选项是什么

本文链接: https://lsjlt.com/news/63031.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • PostgreSQL创建函数中的选项是什么
    这篇文章主要介绍“PostgreSQL创建函数中的选项是什么”,在日常操作中,相信很多人在PostgreSQL创建函数中的选项是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解...
    99+
    2024-04-02
  • php创建数组的函数是什么
    php创建数组的函数有很多,其中常见的有以下几种:array函数array函数是最基本的创建数组的函数,它的语法如下:array( [mixed $value,] [mixed $... ] )其中,value是数组元素的值,...表示可以...
    99+
    2023-05-23
  • 分析PostgreSQL创建函数的过程
    本篇内容主要讲解“分析PostgreSQL创建函数的过程”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“分析PostgreSQL创建函数的过程”吧!一、数据结构F...
    99+
    2024-04-02
  • postgresql索引创建的方法是什么
    在PostgreSQL中,可以使用以下方法来创建索引: 创建唯一索引: CREATE UNIQUE INDEX index_na...
    99+
    2024-04-09
    postgresql
  • linux创建线程的函数是什么
    这篇文章主要介绍“linux创建线程的函数是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“linux创建线程的函数是什么”文章能帮助大家解决问题。linux有创建线程的函数,即“pthread_...
    99+
    2023-06-29
  • PostgreSQL ExecAgg中调用的函数是什么
    本篇内容主要讲解“PostgreSQL ExecAgg中调用的函数是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PostgreSQL ExecAgg中调用...
    99+
    2024-04-02
  • PostgreSQL中函数pg_blocking_pids的作用是什么
    本篇内容介绍了“PostgreSQL中函数pg_blocking_pids的作用是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大...
    99+
    2024-04-02
  • PostgreSQL中PageAddItemExtended函数的逻辑是什么
    本篇内容主要讲解“PostgreSQL中PageAddItemExtended函数的逻辑是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PostgreSQL...
    99+
    2024-04-02
  • PostgreSQL中​ExecutePlan函数与ExecSeqScan函数的作用是什么
    这篇文章主要介绍“PostgreSQL中ExecutePlan函数与ExecSeqScan函数的作用是什么”,在日常操作中,相信很多人在PostgreSQL中ExecutePlan函数与ExecSeqSca...
    99+
    2024-04-02
  • Postgresql数据库角色创建登录的方法是什么
    本篇内容主要讲解“Postgresql数据库角色创建登录的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Postgresql数据库角色创建登录的方法是什么”吧!角色PG中使用角色(ro...
    99+
    2023-07-05
  • 怎么在postgresql中创建数据库
    在postgresql中创建数据库的方法:1.启动postgresql服务;2.登录postgresql数据库;3.使用createdb命令创建;具体步骤如下:首先,在命令行中启动postgresql服务;net start postgre...
    99+
    2024-04-02
  • PostgreSQL中函数CommitTransaction的实现逻辑是什么
    这篇文章主要介绍“PostgreSQL中函数CommitTransaction的实现逻辑是什么”,在日常操作中,相信很多人在PostgreSQL中函数CommitTransaction的实现逻辑是什么问题上...
    99+
    2024-04-02
  • PostgreSQL中AutoVacLauncherMain函数的实现逻辑是什么
    本篇内容介绍了“PostgreSQL中AutoVacLauncherMain函数的实现逻辑是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况...
    99+
    2024-04-02
  • PostgreSQL中函数AssignTransactionId的实现逻辑是什么
    本篇内容介绍了“PostgreSQL中函数AssignTransactionId的实现逻辑是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况...
    99+
    2024-04-02
  • PostgreSQL中PostgresMain函数的实现逻辑是什么
    本篇内容主要讲解“PostgreSQL中PostgresMain函数的实现逻辑是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PostgreSQL中Post...
    99+
    2024-04-02
  • PostgreSQL中exec_simple_query函数的实现逻辑是什么
    这篇文章主要介绍“PostgreSQL中exec_simple_query函数的实现逻辑是什么”,在日常操作中,相信很多人在PostgreSQL中exec_simple_query函数的实现逻辑是什么问题上...
    99+
    2024-04-02
  • PostgreSQL中ExecInsert函数的实现逻辑是什么
    这篇文章主要介绍“PostgreSQL中ExecInsert函数的实现逻辑是什么”,在日常操作中,相信很多人在PostgreSQL中ExecInsert函数的实现逻辑是什么问题上存在疑惑,小编查阅了各式资料...
    99+
    2024-04-02
  • PostgreSQL中ExecModifyTable函数的实现逻辑是什么
    这篇文章主要讲解了“PostgreSQL中ExecModifyTable函数的实现逻辑是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PostgreSQ...
    99+
    2024-04-02
  • PostgreSQL中函数StartTransaction的实现逻辑是什么
    这篇文章主要讲解了“PostgreSQL中函数StartTransaction的实现逻辑是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PostgreS...
    99+
    2024-04-02
  • PostgreSQL中PortalRunMulti函数和PortalRun函数的实现逻辑是什么
    本篇内容主要讲解“PostgreSQL中PortalRunMulti函数和PortalRun函数的实现逻辑是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“P...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作