php - 如何将自定义类型数组传递给 Postgres 函数

标签 php sql postgresql postgresql-9.1 plpgsql

我有一个自定义类型

CREATE TYPE mytype as (id uuid, amount numeric(13,4));

我想将它传递给具有以下签名的函数:

CREATE FUNCTION myschema.myfunction(id uuid, mytypes mytype[])
  RETURNS BOOLEAN AS...

我如何在 postgres 查询中调用它并且不可避免地从 PHP 调用它?

最佳答案

您可以使用带有 array literal 的替代语法而不是数组构造函数,它是一个类似 Postgres 函数的构造,当您需要传递 values 时可能会导致麻烦 - 就像在准备好的语句中:

SELECT myschema.myfunc('0d6311cc-0d74-4a32-8cf9-87835651e1ee'
                  , '{"(0d6311cc-0d74-4a32-8cf9-87835651e1ee, 25)"
                    , "(6449fb3b-844e-440e-8973-31eb6bbefc81, 10)"}'::mytype[]);

我在数组中的两个行类型之间添加了一个换行符用于显示。这是合法的。

如何找到任何文字的正确语法?

问问 Postgres。这是一个演示:

CREATE TABLE mytype (id uuid, amount numeric(13,4));

INSERT INTO mytype VALUES
  ('0d6311cc-0d74-4a32-8cf9-87835651e1ee', 25)
 ,('6449fb3b-844e-440e-8973-31eb6bbefc81', 10);

SELECT ARRAY(SELECT m FROM mytype m);

返回:

{"(0d6311cc-0d74-4a32-8cf9-87835651e1ee,25.0000)","(6449fb3b-844e-440e-8973-31eb6bbefc81,10.0000)"}

db<> fiddle here

任何表(包括临时表)都会隐式创建同名的行类型。

关于php - 如何将自定义类型数组传递给 Postgres 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12009822/

相关文章:

sql - ORDER BY 别名不起作用

postgresql - ckan数据存储设置权限错误

php - 具有某些值的数组中的意外行为

sql - 如何在SQL Server 2016中使用sql查询创建多级json输出?

node.js - sequelize beforeSave Hook 未触发

php - SQL 查询没有被执行

php - Customer_id 的订单计数(按类别 no)

php - 如何比较php中的日期和mysql数据库中的日期?

php - Laravel,获取单个记录的关系($first on a with())

php - 通过 PHP 的 SSH 连接 - Laravel