Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как правильно передать в PL/pgSQL функцию композитный тип?
|
|||
|---|---|---|---|
|
#18+
Хочу передать в функцию на PL/pgSQL композитный тип: CREATE TYPE "dbkernel_mdt"."t_object_attrs" AS ( "tb_attrs_names" VARCHAR[], "tb_attrs_codes" VARCHAR[], "tb_attrs_types" BIGINT[] ); Не могу понять как это сделать.. Раньше писал на PL/SQL, на нем я бы мог просто создать анонимный PL/SQL блок там тип подекларить и там же его заполнить и вызвать мою процедурку, в которую передаю этот тип. Как сие реализовать на PL/pgSQL? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2007, 07:36 |
|
||
|
Как правильно передать в PL/pgSQL функцию композитный тип?
|
|||
|---|---|---|---|
|
#18+
наверное так и передавать... CREATE OR REPLACE FUNCTION "dbkernel_mdt"."function1_test" (arg1 "dbkernel_mdt"."t_object_attrs") RETURNS "pg_catalog"."void" AS $body$ DECLARE BEGIN END; $body$ LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2007, 21:03 |
|
||
|
Как правильно передать в PL/pgSQL функцию композитный тип?
|
|||
|---|---|---|---|
|
#18+
Проблема в том, что я не могу понять, как мне заполнить этот тип для передачи в функцию? Просто в PL/SQL я могу написать что-то вроде: DECLARE attr dbkernel_mdt.t_object_attrs; BEGIN attr.tb_attrs_names[0]:='Name1'; attr.tb_attrs_names[1]:='Name2'; attr.tb_attrs_codes[0]:='Code1'; attr.tb_attrs_codes[1]:='Code2'; attr.tb_attrs_types[0]:=10; attr.tb_attrs_types[1]:=20; dbkernel_mdt.myfunc(attr); END; То есть просто с клиента отправляю это на сервер и все работает на ура. Я не могу понять как мне заполнить этот тип для передачи в свою процедурку. Неужели придется создавать еще одну, выполнить, а потом дропнуть??? Это извращение, по-моему должен быть другой человеческий способ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2007, 21:26 |
|
||
|
Как правильно передать в PL/pgSQL функцию композитный тип?
|
|||
|---|---|---|---|
|
#18+
Для Оракле PL/SQL - родной язык. Postgresql не знает ничего кроме SQL, расширенного некоторыми специфическими коммандами. PL/pgSQL - это только подключаемый адаптированный язык для написания функций. Могу только предложить написать PL/pgSQL функцию , которая использует PL/pgSQL команду EXECUTE command-string [ INTO [STRICT] target ]; где параметром будет строка с требуемым кодом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2007, 01:58 |
|
||
|
Как правильно передать в PL/pgSQL функцию композитный тип?
|
|||
|---|---|---|---|
|
#18+
Да всё просто Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2007, 03:52 |
|
||
|
Как правильно передать в PL/pgSQL функцию композитный тип?
|
|||
|---|---|---|---|
|
#18+
ЯЕХХДа всё просто Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. в описании типа может поменяться порядок полей, тогда данный пример будет работать неверно. ИМХО правильнее сделать функцию, параметрами которой являются отдельные поля композитного типа, а на выходе получается сам композитный тип. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2007, 10:47 |
|
||
|
Как правильно передать в PL/pgSQL функцию композитный тип?
|
|||
|---|---|---|---|
|
#18+
Попробуй так select * from dbkernel_mdt.function1_test('("{''dfgdfsg'',''258dfg''}","{''dfgdfsg'', ''258dfg''}","{10,20}")'::dbkernel_mdt.t_object_attrs); P.S.djon_mnemonik ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2007, 13:20 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=34776201&tid=2005054]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
13ms |
get forum data: |
4ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
| others: | 258ms |
| total: | 415ms |

| 0 / 0 |
