|
|
|
Функции в PostgreSQL
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Сегодня начал изучать функции в PostgreSQL. Написал свою первую тестовую функцию, опираясь на примеры и тд. Всё запустилось, но остались вопросы. Если кому-то будет не трудно, просветите меня, пожалуйста, в следующем: Как я понял, вместо блока DECLARE имена переменным можно задавать прямо в параметрах (как в php), так ли это ? Что означает $$ перед BEGIN ? Что такое found в конструкции IF found THEN ? Как понять конструкцию EXCEPTION WHEN unique_violation THEN и что она делает ? И последний вопрос, который напрямую не касается SQL, но, может быть кто-то в курсе: Как сохранить готовый код функции через PgAdmin III ? Знаю, что там есть определенная форма для создания функций, но там мало что понятно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2015, 22:07:50 |
|
||
|
Функции в PostgreSQL
|
|||
|---|---|---|---|
|
#18+
Ответы на все ваши вопросы можно найти в документации. Как я понял, вместо блока DECLARE имена переменным можно задавать прямо в параметрах (как в php), так ли это ? Без примера вас трудно понять. Можно объявить переменные в Declare, можно в заголовке функции (in & out параметры сигнатуре вызова) Что означает $$ перед BEGIN ? http://www.postgresql.org/docs/9.4/interactive/plpgsql-structure.html Что такое found в конструкции IF found THEN ? 40.5.5. Obtaining the Result Status http://www.postgresql.org/docs/9.4/static/plpgsql-statements.html Как понять конструкцию EXCEPTION WHEN unique_violation THEN и что она делает ? 40.6.6. Trapping Errors http://www.postgresql.org/docs/9.4/static/plpgsql-control-structures.html И последний вопрос, который напрямую не касается SQL, но, может быть кто-то в курсе: Как сохранить готовый код функции через PgAdmin III ? Знаю, что там есть определенная форма для создания функций, но там мало что понятно определение функции - это обычный скрипт, который можно выполнить в pgAdmin Query Tool. Ctrl+E На мой взгляд, спец. формы для создания функций неудобны. Не только в pgAdmin. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2015, 14:19:11 |
|
||
|
Функции в PostgreSQL
|
|||
|---|---|---|---|
|
#18+
функцию написал такую: авторCREATE OR REPLACE FUNCTION InsertUpdate (text,text,text,text) RETURNS text AS $$ DECLARE usr_nm ALIAS FOR $1; pass ALIAS FOR $2; nm ALIAS FOR $3; famil ALIAS FOR $4; result text; BEGIN UPDATE joins.users SET user_name=usr_nm, "password"=pass, imya=nm, familiya=famil WHERE user_name=usr_nm; IF found THEN result := 'Сработал Update'; RETURN result; END IF; INSERT INTO joins.users (user_name, "password", imya, familiya) VALUES (usr_nm, pass, nm, famil); result := 'Сработал Insert'; RETURN result; END; $$ LANGUAGE plpgsql; но после выполнения в pgAdmin Query Tool, функция не сохраняется в схеме, просто pgAdmin пишет, что выполнение успешно. Подскажите, пожалуйста, что я не так делаю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2015, 19:05:22 |
|
||
|
Функции в PostgreSQL
|
|||
|---|---|---|---|
|
#18+
rean1matorфункцию написал … но после выполнения в pgAdmin Query Tool, функция не сохраняется в схеме Что вас заставляет так думать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2015, 20:45:30 |
|
||
|
Функции в PostgreSQL
|
|||
|---|---|---|---|
|
#18+
Ы, например, то, что я её не вижу в схеме, сколько бы я не пытался нажимать "Выполнить" и обновлять содержимое схемы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2015, 23:49:37 |
|
||
|
Функции в PostgreSQL
|
|||
|---|---|---|---|
|
#18+
rean1mator, в вашем случае успешное выполнение сигнализирует о том, что функция создана. Ищите в схеме public в разделе «Функции». Имя будет в нижнем регистре. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2015, 01:28:14 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=38849985&tid=1998258]: |
0ms |
get settings: |
7ms |
get forum list: |
22ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
191ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
| others: | 216ms |
| total: | 522ms |

| 0 / 0 |
