powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Проблема с вызовом процедур внутри функции
3 сообщений из 3, страница 1 из 1
Проблема с вызовом процедур внутри функции
    #39512323
Yado
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Заранее приношу извинения если где-то туплю и прошу сильно не бить.

Преамбула:
Задачу получил на PostgreSQL. Знаком с ней всего пару дней. Нужно сортировку правильную сделать.
Что-бы. Поля

автор'1002Szreet'
'1001Szreet'
'2 Azreet'
'2 Bareet'

Сортировались с учетом цифр, а если цифры одинаковые с учетом букв которые идут за цифрами:

автор'2 Azreet'
'2 Bareet'
'1001Szreet'
'1002Szreet'

Написал функцию, все считает, все работает. Начал доводить до нормального вида и столкнулся с проблемой:

Изначальный селект на котором тестил выглядит примерно так

NumbToStr - моя функция

авторselect id, name
from property
order by (CASE WHEN to_number(substring(name from '^\d+'),'99G999D9S') IS NULL
THEN substring(name, char_length(substring(name from '^\d+'))+1)
ELSE NumbToStr(CAST(to_number(substring(name from '^\d+'),'99G999D9S') AS integer))
|| substring(name, char_length(substring(name from '^\d+'))+1)
END)

Естественно order by выглядит вырвиглазно и нужно все это засунуть в функцию. и тут оказалось что процедура которая отлично работает в селекте не лезит в фунцкию

авторCREATE OR REPLACE FUNCTION NumbToStr (adr text) RETURNS text AS'
DECLARE
i int;
num int;
res text;
restText text;
BEGIN

restText = substring(name, char_length(substring(name from '^\d+'))+1);

CASE WHEN to_number(substring(name from '^\d+'),'99G999D9S') IS NULL
THEN return restText
ELSE num = to_number(substring(num from '^\d+'),'99G999D9S')
END

.....



Подскажите каким образом, внутри функции NumbToStr вызвать substring и to_number?
Самое сложное сделал, а на этой херне уже больше часа стопорюсь.
...
Рейтинг: 0 / 0
Проблема с вызовом процедур внутри функции
    #39512342
Yado
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ругается на эту - ( '^\d+' ) часть
...
Рейтинг: 0 / 0
Проблема с вызовом процедур внутри функции
    #39512378
Yado
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема решилась заменой ' после AS и перед LANGUAGE на $$
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Проблема с вызовом процедур внутри функции
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]