powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Функции в PostgreSQL
7 сообщений из 7, страница 1 из 1
Функции в PostgreSQL
    #38849524
rean1mator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!

Сегодня начал изучать функции в PostgreSQL. Написал свою первую тестовую функцию, опираясь на примеры и тд. Всё запустилось, но остались вопросы. Если кому-то будет не трудно, просветите меня, пожалуйста, в следующем:
Как я понял, вместо блока DECLARE имена переменным можно задавать прямо в параметрах (как в php), так ли это ?

Что означает $$ перед BEGIN ?

Что такое found в конструкции IF found THEN ?

Как понять конструкцию EXCEPTION WHEN unique_violation THEN и что она делает ?


И последний вопрос, который напрямую не касается SQL, но, может быть кто-то в курсе:

Как сохранить готовый код функции через PgAdmin III ? Знаю, что там есть определенная форма для создания функций, но там мало что понятно
...
Рейтинг: 0 / 0
Функции в PostgreSQL
    #38849711
tadmin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ответы на все ваши вопросы можно найти в документации.

Как я понял, вместо блока 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.
...
Рейтинг: 0 / 0
Функции в PostgreSQL
    #38849828
rean1mator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
функцию написал такую:
автор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 пишет, что выполнение успешно. Подскажите, пожалуйста, что я не так делаю?
...
Рейтинг: 0 / 0
Функции в PostgreSQL
    #38849872
Ы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ы
Гость
rean1matorфункцию написал … но после выполнения в pgAdmin Query Tool, функция не сохраняется в схеме
Что вас заставляет так думать?
...
Рейтинг: 0 / 0
Функции в PostgreSQL
    #38849950
rean1mator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ы, например, то, что я её не вижу в схеме, сколько бы я не пытался нажимать "Выполнить" и обновлять содержимое схемы
...
Рейтинг: 0 / 0
Функции в PostgreSQL
    #38849985
Ы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ы
Гость
rean1mator,

в вашем случае успешное выполнение сигнализирует о том, что функция создана. Ищите в схеме public в разделе «Функции». Имя будет в нижнем регистре.
...
Рейтинг: 0 / 0
Функции в PostgreSQL
    #38850058
rean1mator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, нашел :)

Понял свою ошибку. Я при создании функции не написал, в какой схеме её создать.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Функции в PostgreSQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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