CREATE CONVERSION

Name

CREATE CONVERSION -- 定义一个新的编码转换

Synopsis

CREATE [ DEFAULT ] CONVERSION name
    FOR source_encoding TO dest_encoding FROM function_name

描述

CREATE CONVERSION定义字符集之间的转换。 标记为DEFAULT的转换可以用于在前端和后端之间的自动编码转换。 出于这个原因,必须定义两种转换,从编码 A 到 B从编码B到A。

为了可以创建转换,你必须在函数上有EXECUTE权限并且在目标模式 上有CREATE权限。

参数

DEFAULT

DEFAULT子句表示这种转换是从这种源编码到目标编码的缺省转换。 同一个模式里每一对编码应该只有一个缺省编码转换。

name

转换的名字。转换名可以用模式修饰。如果没有,那么转换就在当前模式中定义。 转换名在一个模式里必须唯一。

source_encoding

源编码名

dest_encoding

目标编码名

function_name

用于执行转换的函数。这个函数名可以用模式名修饰。如果没有,那么将从路径中找出这个函数。

此函数必须有如下的样子:

conv_proc(
    integer,  -- source encoding ID
    integer,  -- destination encoding ID
    cstring,  -- source string (null terminated C string)
    internal, -- destination (fill with a null terminated C string)
    integer   -- source string length
) RETURNS void;

注意

DROP CONVERSION删除用户定义的转换。

创建转换所需要的权限可能在未来的版本中改变。

例子

myfunc创建一个从UTF8编码到 LATIN1编码的转换:

CREATE CONVERSION myconv FOR 'UTF8' TO 'LATIN1' FROM myfunc;

兼容性

CREATE CONVERSIONPostgreSQL的扩展。 在SQL标准里没有CREATE CONVERSION语句。 但有一个在语法和意义上都很相似的CREATE TRANSLATION语句。

又见

ALTER CONVERSION, CREATE FUNCTION, DROP CONVERSION