Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
10.03.2004, 23:30
|
|||
---|---|---|---|
Количество возвращаемых строк из функции |
|||
#18+
Обнаружил одну неприятную вещь. Имеется функция типа: create function test1() returns int as' select max(field1) from table1;' language 'sql'; И эта функция почему то всегда выдает одну строку. При том даже если таблица пустая. Может это и хороше, а может и плохо. По крайней мере придется делать дополнительную проверку на количество строк в таблице. а тк было бы хорошо. нет строк, возвращает пустой ответ. Проверял в перле. после вызова функции по пустой таблице, всегда клоичество возвращаемых строк 1. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
11.03.2004, 11:08
|
|||
---|---|---|---|
|
|||
Количество возвращаемых строк из функции |
|||
#18+
Если 1) в таблице нет строк, или 2) значения поля field1 во всех строках - NULL, то эта функция действительно возвращает одну строку со значением NULL. Может быть это и использовать как признак? (Или вам нужно различать ситуации 1 и 2?) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
11.03.2004, 11:20
|
|||
---|---|---|---|
Количество возвращаемых строк из функции |
|||
#18+
в моем случае это поен не может быть NULL. Мне надо различить если строк нет, то тогда одни действия если есть, то другие. На саомм деле я немного разобрался. Так как это по любому результат работы функции которая возвращает значение (я имею ввиду функцию MAX), то по этому и возвращается как минимум одна строка. В данном случае (когда в таблице нат строк) видимо NULL. Но перл такие штуки не понимает, для него это просто пустая строка. в результате если сравнивать вызвращаемый результат с пустой строкой, то и получаем некую диагностику. Если в таблице строк нет, то в перл возвращается пустая строка, если есть результат, то соответственно он и возвращается. Хлипковато конечно, но хоть какое то решение. Уж больно не хочется городить отдельный запрос для подсчета строк. Как то глупо получается. Хотя кто знает. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
11.03.2004, 11:35
|
|||
---|---|---|---|
|
|||
Количество возвращаемых строк из функции |
|||
#18+
"Но перл такие штуки не понимает, для него это просто пустая строка." Вроде бы в перле это не пустая строка, а undef. "Хлипковато конечно, но хоть какое то решение." Мне кажется что решение вполне нормальное. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
11.03.2004, 13:11
|
|||
---|---|---|---|
|
|||
Количество возвращаемых строк из функции |
|||
#18+
ваще-то вместо Код: plaintext 1.
лучше юзать Код: plaintext 1.
два плюса: 1) будет использоваться индекс по field1, если есть; 2) не будет возвращаться записей, если таблица пустая. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
11.03.2004, 15:36
|
|||
---|---|---|---|
Количество возвращаемых строк из функции |
|||
#18+
автор Вроде бы в перле это не пустая строка, а undef. пробовал, возвращается именно пустая строка. По крайней мере на функцию defined() говорит что все действительно дефайнед. автор 1) будет использоваться индекс по field1, если есть; 2) не будет возвращаться записей, если таблица пустая. Ну знаете, а зачем же тогда функции? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
11.03.2004, 16:55
|
|||
---|---|---|---|
|
|||
Количество возвращаемых строк из функции |
|||
#18+
"пробовал, возвращается именно пустая строка. По крайней мере на функцию defined() говорит что все действительно дефайнед." Это странно, потому что у меня такой скрипт: #!/usr/bin/perl -w use strict; use DBI; my $dbh = DBI->connect( "dbi:Pg:dbname=template1", "postgres" ) || die "cant connect"; my $sth = $dbh->prepare( "select 'foo', null, '', 'bar'" ) || die "cant prepare"; $sth->execute() || die "cant execute"; my @row = $sth->fetchrow(); print map { defined($_) ? "'$_'\n" : "UNDEF\n" } @row; $sth->finish() || die "cant finish"; $dbh->disconnect(); Выдает: 'foo' UNDEF '' 'bar' ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=53&mobile=1&tid=2007935]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
136ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 243ms |
0 / 0 |