举报投诉联系我们 手机版 热门标签 编程学
您的位置:编程学 > PostgreSQL CREATE TRANSFORM

PostgreSQL CREATE TRANSFORM

2023-05-11 14:18

 PostgreSQL CREATE TRANSFORM

CREATE TRANSFORM — 定义一个新的转换

大纲

CREATE [ OR REPLACE ] TRANSFORM FOR type_name LANGUAGE lang_name (
    FROM SQL WITH FUNCTION from_sql_function_name [ (argument_type [, ...]) ],
    TO SQL WITH FUNCTION to_sql_function_name [ (argument_type [, ...]) ]
);

简介

CREATE TRANSFORM定义一种新的转换。 CREATE OR REPLACE TRANSFORM将 创建一种新的转换或者替换现有的定义。

一种转换指定了如何把一种数据类型适配到一种过程语言。例如,在用 PL/Python 编写一个使用hstore类型的函数时,PL/Python 没有关于如何在 Python 环境中表示hstore值的先验知识。 语言的实现通常默认会使用文本表示,但是在一些时候这很不方便,例如 有时可能用一个联合数组或者列表更合适。

一种转换指定了两个函数:

  • 一个from SQL函数负责将类型从 SQL 环境转换到语言。 这个函数将在该语言编写的一个函数的参数上调用。

  • 一个to SQL函数负责将类型从语言转换到 SQL 环境。这 个函数将在该语言编写的一个函数的返回值上调用。

没有必要同时提供这些函数。如果有一种没有被指定,将在必要时使用与语言相 关的默认行为(为了完全阻止在一个方向上发生转换,你也可以写一个总是报错 的转换函数)。

要创建一种转换,你必须拥有该类型并且具有该类型上的 USAGE特权,拥有该语言上的 USAGE特权,并且拥有 from-SQL 和 to-SQL 函数(如果 指定了)及其上的EXECUTE特权。

参数

type_name

该转换的数据类型的名称。

lang_name

该转换的语言的名称。

from_sql_function_name[(argument_type [, ...])]

将该类型从 SQL 环境转换到该语言的函数名。它必须接受一个 internal类型的参数并且返回类型internal。 实参将是该转换所适用的类型,并且该函数也应该被写成认为它是那种类型( 但是不允许声明一个返回internal但没有至少一个 internal类型参数的 SQL 层函数)。实际的返回值将与 语言的实现相关。如果没有指定参数列表,则函数名在该模式中必须唯一。

to_sql_function_name[(argument_type [, ...])]

将该类型从语言转换到 SQL 环境的函数名。它必须接受一个 internal类型的参数并且返回该转换所适用的类型。实参值 将与语言的实现相关。如果没有指定参数列表,则函数名在该模式中必须唯一。

注解

使用DROP TRANSFORM移除转换。

示例

要为类型hstore和语言 plpythonu创建一种转换,先搞定该类型和语言:

CREATE TYPE hstore ...;

CREATE EXTENSION plpythonu;

然后创建需要的函数:

CREATE FUNCTION hstore_to_plpython(val internal) RETURNS internal
LANGUAGE C STRICT IMMUTABLE
AS ...;

CREATE FUNCTION plpython_to_hstore(val internal) RETURNS hstore
LANGUAGE C STRICT IMMUTABLE
AS ...;

最后创建转换把它们连接起来:

CREATE TRANSFORM FOR hstore LANGUAGE plpythonu (
    FROM SQL WITH FUNCTION hstore_to_plpython(internal),
    TO SQL WITH FUNCTION plpython_to_hstore(internal)
);

实际上,这些命令将被包裹在扩展中。

contrib小节包含了一些提供转换的扩展, 它们可以作为实际的例子。

兼容性

这种形式的CREATE TRANSFORM是一种 PostgreSQL扩展。在 SQL标准中有一个CREATE TRANSFORM命令,但是它是用于把数据类型适配到 客户端语言。该用法不受 PostgreSQL支持。

另见

CREATE FUNCTION, CREATE LANGUAGE, CREATE TYPE , DROP TRANSFORM


阅读全文
以上是编程学为你收集整理的 PostgreSQL CREATE TRANSFORM全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
  •  PostgreSQL DROP DATABASE

    PostgreSQL DROP DATABASE

    2023-05-18

    DROP DATABASE — 移除一个数据库大纲DROP DATABASE [ IF EXISTS ] name [ [ WITH ] ( option [, ...] ) ]其中选项 可以是:FORCE...

  •  PostgreSQL DROP STATISTICS

    PostgreSQL DROP STATISTICS

    2023-04-17

    DROP STATISTICS — 删除扩展统计 大纲DROP STATISTICS [ IF EXISTS ] name [, ...] 描述 DROP STATISTICS删除数据库中的统计对...

  •  XSL-FO 流

    XSL-FO 流

    2023-04-10 XSL-FO教程

    XSL-FO 流在 XSL-FO 中,你应该如何填充页面的内容呢?本节解答了这个问题。XSL-FO 页面使用来自 fo:flow 元素的数据进行填充。X...

  •  XSL-FO basic-link 对象

    XSL-FO basic-link 对象

    2023-05-23 XSL-FO教程

    XSL-FO basic-link 对象XSL-FO 参考手册本节介绍的是 XSL-FO 中的 basic-link对象,你将了解该对象的定义、语法以及属性。 定义...

  •  XSL-FO page-sequence-master 对象

    XSL-FO page-sequence-master 对象

    2023-05-28 XSL-FO教程

    XSL-FO page-sequence-master 对象XSL-FO 参考手册定义和用法 fo:page-sequence-master 对象规定要使用的 simple-page-masters ...

© 2024 编程学 bianchengxue.com 版权所有 联系我们
桂ICP备19012293号-7 返回底部