【问题标题】:How to create array of enum data type如何创建枚举数据类型的数组
【发布时间】:2022-01-26 12:48:11
【问题描述】:

我正在尝试制作一个可以用作过滤器的函数,以返回特定类型的所有位置。

假设place_types 定义为:

CREATE TYPE place_types AS ENUM ('RESTAURANT', 'MALL');

我的功能是这样的:

CREATE OR REPLACE FUNCTION
  get_places(
    p_place_types place_types[],
  )
  RETURNS SETOF places_ratings
  LANGUAGE plpgsql
AS $function$
BEGIN
  RETURN QUERY
  SELECT * FROM places_ratings
    WHERE places_ratings.place_type = ANY(p_place_types)
END $function$;

但是place_types[] 产生了这个错误:

类型浴室类型[] 不存在

知道如何解决这个问题吗?有没有不需要为此创建类型的方法?谢谢:)

【问题讨论】:

    标签: database postgresql enums


    【解决方案1】:

    您遇到错误是因为您没有在数据库架构中创建类型。你应该试试:

    CREATE TYPE your_db_schema.place_types AS ENUM ('RESTAURANT', 'MALL');
    

    然后你创建你的函数:

    CREATE OR REPLACE FUNCTION
      get_places(
        p_place_types place_types[]
      )
      RETURNS SETOF places_ratings
      LANGUAGE plpgsql
    AS $function$
    BEGIN
      RETURN QUERY
      SELECT * FROM places_ratings
        WHERE places_ratings.place_type = ANY(p_place_types);
    END $function$;
    

    【讨论】:

    • 我当时在哪里创建的?我认为它会自动完成,因为 place_types 枚举只是作为列类型查找。感谢您的回答顺便说一句:)
    猜你喜欢
    • 2011-03-10
    • 1970-01-01
    • 2015-02-10
    • 2017-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多