================= CREATE CONVERSION ================= .. container:: refentry :name: SQL-CREATECONVERSION .. container:: titlepage .. container:: refnamediv .. rubric:: CREATE CONVERSION :name: create-conversion CREATE CONVERSION — 定义一种新的编码转换 .. container:: refsynopsisdiv .. rubric:: 大纲 :name: 大纲 .. code:: synopsis CREATE [ DEFAULT ] CONVERSION name FOR source_encoding TO dest_encoding FROM function_name .. container:: refsect1 :name: SQL-CREATECONVERSION-DESCRIPTION .. rubric:: 描述 :name: 描述 ``CREATE CONVERSION``\ 定义一种字符集编码间 新的转换。还有,被标记为\ ``DEFAULT``\ 的转换将被 自动地用于客户端和服务器之间的编码转换。为了这个目的,必须定义两个 转换(从编码 A 到 B *以及*\ 从编码 B 到 A)。 要创建一个转换,你必须拥有该函数上的\ ``EXECUTE``\ 权限 以及目标模式上的\ ``CREATE``\ 权限。 .. container:: refsect1 :name: id-1.9.3.60.6 .. rubric:: 参数 :name: 参数 .. container:: variablelist ``DEFAULT`` ``DEFAULT``\ 子句表示这个转换是从源编码到目标编码的默认 转换。在一个模式中对于每一个编码对,只应该有一个默认转换。 ``name`` 转换的名称,可以被模式限定。如果没有被模式限定,该转换被定义在 当前模式中。在一个模式中,转换名称必须唯一。 ``source_encoding`` 源编码名称。 ``dest_encoding`` 目标编码名称。 ``function_name`` 被用来执行转换的函数。函数名可以被模式限定。如果没有,将在路径 中查找该函数。 该函数必须具有一下的特征: .. code:: programlisting conv_proc( integer, -- 源编码 ID integer, -- 目标编码 ID cstring, -- 源字符串(空值终止的 C 字符串) internal, -- 目标(用一个空值终止的 C 字符串填充) integer -- 源字符串长度 ) RETURNS void; .. container:: refsect1 :name: SQL-CREATECONVERSION-NOTES .. rubric:: 注解 :name: 注解 使用\ ``DROP CONVERSION``\ 可以移除用户定义的转换。 创建转换所要求的权限可能在未来的发行中被更改。 .. container:: refsect1 :name: SQL-CREATECONVERSION-EXAMPLES .. rubric:: 示例 :name: 示例 使用\ ``myfunc``\ 创建一个从编码\ ``UTF8``\ 到 ``LATIN1``\ 的转换: .. code:: programlisting CREATE CONVERSION myconv FOR 'UTF8' TO 'LATIN1' FROM myfunc; .. container:: refsect1 :name: SQL-CREATECONVERSION-COMPAT .. rubric:: 兼容性 :name: 兼容性 ``CREATE CONVERSION``\ 是一种 PostgreSQL扩展。在 SQL 标准中 没有\ ``CREATE CONVERSION``\ 语句,但是有 一个目的和语法都类似的 ``CREATE TRANSLATION``\ 语句。 .. container:: refsect1 :name: SQL-CREATECONVERSION-SEEALSO .. rubric:: 另见 :name: 另见 `ALTER CONVERSION `__, `CREATE FUNCTION `__, `DROP CONVERSION `__