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

Подскажите пожалуйста типовое решение такого вопроса,


абстрактный пример из t-sql ,
Необходимо реализовать функцию обновления (update) записи в таблицу.

Код: sql
1.
2.
3.
4.
5.
6.
create table t ( 
id int
f1 int, 
f2 int, 
f3 int
)



мы делаем нечто :

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
create procedure update_t1 @id int, @f1 int, @f2 int, @f3 int 
as begin
     select 
         isnull(@t1, t.t1),
         isnull(@t2, t.t2),
         isnull(@t3, t.t3)
      from t where id = @id...;

   update t 
        set t1 = @t1,
             t2 = @t2,
             t3 = @t3
         where id = @id ...  
end



таким образом мы можем апдейтить типа так

select update_t1(@id = 3, @t1 = 100) - обновим поле t1 записи с id=3,
select update_t1(@id=3, @t2 = 200, @t3=3000) - обновим поле t2 и t3 записи с id=3

т.е. количество именованных параметров передаем то количество, которое необходимо.


Какая практика для этого случая в pg?

Если сделать аналогично,
то при попытке вызвать update_t1(id:=3, t1:=100) - процедура ругнется, что не все параметры указаны.
Т.е. явно необходимо указывать все параметры, даже те которые нам апдейтить не нужно.

Спасибо!
...
Рейтинг: 0 / 0
параметры функции
    #38698161
Фотография Orin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
здесь т.е. должно быть типа так, выше в примере не очень корректно:

Код: sql
1.
2.
3.
4.
5.
6.
create procedure update_t1 @id int, @f1 int, @f2 int, @f3 int 
as begin
     select 
        @t1=  isnull(@t1, t.t1),
        @t2= isnull(@t2, t.t2),
        @t3= isnull(@t3, t.t3)
...
Рейтинг: 0 / 0
параметры функции
    #38698196
Фотография Orin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не актуально :)

default parameters
...
Рейтинг: 0 / 0
параметры функции
    #38698505
Гость_0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Orin,

а зачем select? Можно же через один update сделать.
...
Рейтинг: 0 / 0
параметры функции
    #38699345
fte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / параметры функции
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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