powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / plpgsql json_object
5 сообщений из 5, страница 1 из 1
plpgsql json_object
    #39982012
Alex_Wong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не получается внести переменные str1 и str2 вот так:
RETURN json_object(str1, str2);

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
--DROP FUNCTION public.msg_();
CREATE OR REPLACE FUNCTION public.msg()
RETURNS text
LANGUAGE 'plpgsql'
COST 100
VOLATILE
AS $BODY$
DECLARE
arr1 int []; arr2 varchar []; str1 text; str2 text;
BEGIN
arr1 := array_append(arr1, 1);
arr1 := array_append(arr1, 2);
arr1 := array_append(arr1, 3);
str1 := array_to_string(arr1, ',');
str1 := '{' || str1 || '}';
-- RETURN str1;                       -- {1,2,3}
arr2 := array_append(arr2, 'abc');
arr2 := array_append(arr2, 'sql');
arr2 := array_append(arr2, 'xyz');
str2 := array_to_string(arr2, ',');
str2 := '{' || str2 || '}';
-- RETURN str2;                       -- {abc,sql,xyz}

-- Так не работает:
-- RETURN json_object(str1, str2);

-- Так работает: {"1" : "abc", "2" : "sql", "3" : "xyz"}
 RETURN json_object('{1,2,3}','{abc,sql,xyz}'); 
END;
$BODY$;



Подскажите, пожалуйста, как правильно делать.
...
Рейтинг: 0 / 0
plpgsql json_object
    #39982028
fte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Wong,
Ну а само сообщение об ошибке где????
Как минимум у Вас
Определение функции: RETURNS text
Результат: RETURN json_object ('{1,2,3}','{abc,sql,xyz}');
...
Рейтинг: 0 / 0
plpgsql json_object
    #39982030
Alex_Wong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fte, сообщение об ошибке:

ERROR: function json_object(text, text) does not exist
LINE 1: SELECT json_object(str1, str2)
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
QUERY: SELECT json_object(str1, str2)

...
Рейтинг: 0 / 0
plpgsql json_object
    #39982043
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Wong
ERROR: function json_object(text, text) does not exist

Ну как бы да, почему вы решили что она такая существует?
Код: plaintext
1.
2.
3.
4.
5.
\df json_object
                                  Список функций
   Схема    |     Имя     | Тип данных результата | Типы данных аргументов |  Тип  
------------+-------------+-----------------------+------------------------+-------
 pg_catalog | json_object | json                  | text[]                 | функ.
 pg_catalog | json_object | json                  | text[], text[]         | функ.

Зачем вы массивы к строкам приводите? Передайте сразу массивы, если в них у вас соответственно ключи и значения для json объекта.
...
Рейтинг: 0 / 0
plpgsql json_object
    #39982137
Alex_Wong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Melkij,
автор Зачем вы массивы к строкам приводите?

по не знанию .. думал, что если так работает:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
DECLARE
arr1 varchar []; arr2 varchar [];
BEGIN
arr1 := array_append(arr1, '1');
arr1 := array_append(arr1, '2');
arr1 := array_append(arr1, '3');
--
arr2 := array_append(arr2, 'abc');
arr2 := array_append(arr2, 'sql');
arr2 := array_append(arr2, 'xyz');
--
 RETURN json_object(arr1, arr2);
END;



но у меня arr1 - массив чисел, они генерятся от условий ..,
а с ними не работает, как привел исходно в вопросе и error
пишет о необходимости приведения типов

Сделал так:
arr1 := array_append(arr1, 1::varchar);
arr1 := array_append(arr1, 2::varchar);
arr1 := array_append(arr1, 3::varchar);
работает, спасибо.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / plpgsql json_object
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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