gpt4 book ai didi

sql - PostgreSQL 创建类型 PL/pgSQL 和 cstring

转载 作者:行者123 更新时间:2023-11-29 14:22:03 29 4
gpt4 key购买 nike

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

CREATE OR REPLACE FUNCTION "CPF_in"(cstring)

"PL/pgSQL functions cannot accept type cstring"

(但手册中就是这样。)我可以用“字符变化”代替 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
);

我明白了

ERROR:  syntax error at or near ")"
LINE 2: INPUT = CPF_in(),

这应该如何完成?手册只说cstring...

最佳答案

cstring pseudo-type用于用像 C 这样的低级语言进行编程,而不是用在 PL/pgSQL 中。如果你是 creating a new base type,你必须使用像 C 这样的低级语言.

You must register two or more functions (using CREATE FUNCTION) before defining the type. The support functions input_function and output_function are required . . . . Generally these functions have to be coded in C or another low-level language.

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

要控制输入,您可以使用函数。 (创建函数...)您可以在 PL/pgSQL 中编写函数。同样,考虑撤销对表的权限。

关于sql - PostgreSQL 创建类型 PL/pgSQL 和 cstring,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21499170/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com