Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / параметры функции / 5 сообщений из 5, страница 1 из 1
16.07.2014, 17:00:47
    #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
16.07.2014, 17:03:42
    #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
16.07.2014, 17:27:23
    #38698196
Orin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
параметры функции
не актуально :)

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

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


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