PostgreSQL创建类型PL/pgSQL和cstring

PostgreSQL创建类型PL/pgSQL和cstring,sql,postgresql,Sql,Postgresql,我想格式化PostgreSQL 9.1数据库输出中的一些字段。我想创建一个类型,这样我就可以在输出函数中进行格式化,并检查输入函数中的不一致性。我决定使用过程语言PL/pgSQL。但我有一些错误: CREATE OR REPLACE FUNCTION "CPF_in"(cstring) "PL/pgSQL functions cannot accept type cstring" (但手册中是这样的。)我可以将“character variabling”替换为cstring,甚至可以将()保

我想格式化PostgreSQL 9.1数据库输出中的一些字段。我想创建一个类型,这样我就可以在输出函数中进行格式化,并检查输入函数中的不一致性。我决定使用过程语言PL/pgSQL。但我有一些错误:

CREATE OR REPLACE FUNCTION "CPF_in"(cstring)

"PL/pgSQL functions cannot accept type cstring"
(但手册中是这样的。)我可以将“character variabling”替换为cstring,甚至可以将()保留为空。但当我要创建所需类型时:

CREATE TYPE Tcpf (
INPUT = CPF_in(character varying),
OUTPUT = CPF_out
);
我有一个错误:

ERROR:  syntax error at or near ")"
LINE 2: INPUT = CPF_in(character varying),
如果我尝试

CREATE TYPE Tcpf (
INPUT = CPF_in(),
OUTPUT = CPF_out
);
我明白了

这应该怎么做?手册中只说cstring…

用于用C之类的低级语言编程,而不是PL/pgSQL。如果你需要的话,你必须使用像C这样的低级语言

必须先注册两个或多个函数(使用CREATE FUNCTION) 定义类型。支持功能输入功能需要输出功能。 通常,这些函数必须用C或其他低级语言编码 语言

控制输出格式的更简单方法是使用视图。如果格式很复杂,请编写一个函数,然后从视图中调用该函数。如果需要强制每个客户端使用您的格式,则可以撤消对基表的权限。您可能需要创建触发器以使视图完全可更新


对于控制输入,可以使用函数。(创建函数…)可以用PL/pgSQL编写函数。再次,考虑撤销对表的权限。

我认为问题的标题中已经有一个单词不需要在标签中……谢谢,它起作用了。虽然我是从select调用这个函数,但是它很好。
ERROR:  syntax error at or near ")"
LINE 2: INPUT = CPF_in(),