PostgreSQL创建类型PL/pgSQL和cstring
我想格式化PostgreSQL 9.1数据库输出中的一些字段。我想创建一个类型,这样我就可以在输出函数中进行格式化,并检查输入函数中的不一致性。我决定使用过程语言PL/pgSQL。但我有一些错误: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,甚至可以将()保
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(),