Я пишу функцию для класса, которая должна преобразовать один столбец в моей таблице. Я использую базу данных, которую они мне предоставили (прокат DVD). Я думаю, что конечная цель — добавить эту функцию вместо имени столбца внутри другого запроса. (Я только предполагаю, потому что инструкции для этого класса очень расплывчаты, и учитель пока ничем не помог)
CREATE OR REPLACE FUNCTION rental_amount()
RETURNS text AS $dollar_amount$
DECLARE dollar_amount text;
BEGIN
SELECT TO_CHAR(amount,'l9D99') amount_format INTO dollar_amount
FROM detail_report
ORDER BY title;
RETURN dollar_amount;
END; $dollar_amount$
LANGUAGE plpgsql;
Моя функция (или то, что я пытаюсь сделать) в основном добавляет знак доллара перед числами в столбце суммы. Когда функция вызывается, она возвращает только первое значение из первой строки.
Однако когда я запускаю запрос выбора внутри функции, я получаю все значения. ваш текствведите сюда описание изображения
Как я могу это исправить?
Сначала я пытался заставить функцию возвращать таблицу, но затем они добавили дополнительное требование, согласно которому я должен включить функцию в другой запрос. Я пробовал писать это разными способами, но у меня нет большого опыта работы с Postgres, и преподаватели, похоже, не хотят помочь. Когда вы задаете какие-либо вопросы, они только говорят: обратитесь к xyz или рубрике, но это не помогает.
Можем ли мы увидеть инструкции?
Извините за вашего очень расплывчатого инструктора, но мы по-прежнему не принимаем здесь очень расплывчатые вопросы. Пожалуйста, четко сформулируйте свой вопрос и уберите шум.





Судя по тому, что вы описали, похоже, что функция должна только форматировать значение.
create or replace function format_as_money(m float) returns text
language sql
immutable
returns null on null input
return to_char(1, 'L') || m;
Обратите внимание: я не знаю особенностей вашего стола или вашего задания, но вы сможете внести изменения отсюда. См. раздел Примеры документации по созданию функций.
Затем используйте это в выборе, передав столбец суммы.
select
title,
format_as_money(amount) as formatted_amount
from detail_report
order by title
Большое вам спасибо за вашу помощь! Это сработало отлично, я только надеюсь, что именно это имел в виду мой инструктор. Я также прочитал документацию о том, как писать функции и использовать функцию to_char.
«Я думаю, цель состоит в том, чтобы добавить эту функцию вместо имени столбца внутри другого запроса» — посмотрите stackoverflow.com/a/8250729/1048572.