|
Кто-нибудь знает как работает процедура?
|
|||
---|---|---|---|
#18+
Столкнулся с такой проблеммой: процедура запускается из PHP(используются библиотеки SyBase) и выдаёт некий набор даннных. Прежде чем он выдасться производяться некие вычисления во временных таблицах. И что интересно: при некоторых условиях(когда есть попытки просвоить одному или нескольким полям значение NULL) один апдейт посередине(!) процедуры не выполняется, хотя всё остальное работает нормально без ошибок. В QA всё работает нормально. Вообщем то я это дело конечно обошел, но мне непонятно - почему так происходит? Как может клиент(неважно, глючный он или нет) влиять на выполнение откомпилированной процедуры? С приветом Сергей ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2001, 18:14 |
|
Кто-нибудь знает как работает процедура?
|
|||
---|---|---|---|
#18+
Клиент, конечно, не может влиять на ее выпонение. А при вызове процедуры из PHP каждый раз создается новое соединение или используется уже существующее? Как предположение: может используется уже существующее и при этом ранее была установлена/сброшена какая-нибудь опция, которая влияет на выполнение. Тогда при запуске SQL Analyzer-а используются установки по умолчанию, а при вызове из PHP - ранее установленные. Например в SP Update tbl set fld1=null where fld2<>null Оно будет зависеть от того установлно ли ansi_nulls или нет. Если же соеденение устанавливается каждый раз новое и в SQL Analyzer-е наких установок не проводилось, то действительно странно Да, вот еще, пользователь от имени которого выполняется SP в Analyzer-e тот же что и тот от имени которого она выполняется из PHP? В смысле может у них локали разные установлены и это влияет? Ну и само собой надо быть уверенным, что параметры SP при использовании SQL Analyzer-а те же, что и при вызове из PHP ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2001, 18:57 |
|
Кто-нибудь знает как работает процедура?
|
|||
---|---|---|---|
#18+
"Клиент, конечно, не может влиять на ее выпонение" Вот и я так же думал до вчерашнего дня. ansi_nulls я задавал и явно, и в процедуре. Параметры и юзер естественно те же. внутри стоит примерно такой апдейт: update #t set a=p.f from #t t, #p p where ...(никакого сравнения с null нет) так вот, если хотя бы в одной строке #p есть null, то апдейт не проходит целиком получается вообще странная вещь - если в выборке в любом поле в любой строке есть null, то она вся становиться пустой. "Вот такая, панимашь, загогулина." (С) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.03.2001, 09:38 |
|
|
start [/forum/topic.php?fid=46&fpage=3585&tid=1827152]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
31ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 135ms |
0 / 0 |