gpt4 book ai didi

sql - 如何将记录作为参数传递给 PL/pgSQL 函数?

转载 作者:行者123 更新时间:2023-11-29 11:36:30 24 4
gpt4 key购买 nike

我一直在网上寻找这个答案,但找不到。

我正在尝试通过 PL/pgSQL 函数传递一条记录。我尝试了两种方式。

拳头方式:

CREATE OR REPLACE FUNCTION translateToReadableDate(mRecord dim_date%ROWTYPE) RETURNS void AS $$

这就是输出:

psql:requestExample.sql:21: ERROR:  syntax error at or near "%"
LINE 1: ... FUNCTION translateToReadableDate(mRecord dim_date%ROWTYPE) ...
^

第二种方式:

CREATE OR REPLACE FUNCTION translateToReadableDate(mRecord RECORD) RETURNS void AS $$

还有输出

psql:requestExample.sql:21: ERROR:  PL/pgSQL functions cannot accept type record

请问有人知道怎么做吗?

CREATE OR REPLACE FUNCTION translateToReadableDate(mRecord dim_date) RETURNS void AS $$

BEGIN

SELECT dim_day.name || ' (' || dim_day_in_month.id || ') ' || dim_month.name || 'is the ' || dim_week.id || ' week of the year. ' AS "Une phrase", dim_quarter.id, dim_year.id
FROM dim_date dd
JOIN dim_day ON dd.day_id = dim_day.day_id
JOIN dim_day_in_month ON dd.day_in_month_id = day_in_month.day_in_month_id
JOIN dim_week ON dd.week_id = dim_week.week_id
JOIN dim_month ON dd.month_id = dim_month.month_id
JOIN dim_quarter ON dd.quarter_id = dim_quarter.quarter_id
JOIN dim_year ON dd.year_id = dim_year.year_id
WHERE dd.day_id = mRecord.day_id
AND dd.day_in_month_id = mRecord.day_in_month_id
AND dd.week_id = mRecord.week_id
AND dd.month_id = mRecord.month_id
AND dd.quarter_id = mRecord.quarter_id
AND dd.year_id = mRecord.year_id;

END;
$$ LANGUAGE plpgsql;

最佳答案

试试这个:

CREATE OR REPLACE FUNCTION translateToReadableDate(mRecord dim_date) RETURNS void AS $$

dim_date 必须是一个表。

编辑:

好吧,现在我真的很困惑。

  1. 日期应该是一列,而不是表格。我不明白你为什么要创建一个包含日期值的表。
  2. 您可以使用 to_char 毫无问题地格式化日期。读这个:Data Type Formatting Functions学习如何。您创建的那个函数毫无意义。
  3. 你在输出 PL/pgSQL 吗?格式化不应该由中间层完成吗?您应该只从数据库中返回一个日期。

最后,我建议阅读 PL/pgSQL Manual .里面有很多好东西。

关于sql - 如何将记录作为参数传递给 PL/pgSQL 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3880210/

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