Кто-нибудь знает как работает процедура?

SergSuper
Дата: 21.03.2001 18:14:11
Столкнулся с такой проблеммой: процедура запускается из PHP(используются библиотеки SyBase) и выдаёт некий набор даннных. Прежде чем он выдасться производяться некие вычисления во временных таблицах. И что интересно: при некоторых условиях(когда есть попытки просвоить одному или нескольким полям значение NULL) один апдейт посередине(!) процедуры не выполняется, хотя всё остальное работает нормально без ошибок. В QA всё работает нормально.
Вообщем то я это дело конечно обошел, но мне непонятно - почему так происходит? Как может клиент(неважно, глючный он или нет) влиять на выполнение откомпилированной процедуры?

С приветом Сергей
Dmitry
Дата: 21.03.2001 18:57:55
Клиент, конечно, не может влиять на ее выпонение. А при вызове процедуры из 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
SergSuper
Дата: 22.03.2001 09:38:34
"Клиент, конечно, не может влиять на ее выпонение"

Вот и я так же думал до вчерашнего дня.
ansi_nulls я задавал и явно, и в процедуре.
Параметры и юзер естественно те же.


внутри стоит примерно такой апдейт:

update #t
set a=p.f
from #t t, #p p
where ...(никакого сравнения с null нет)

так вот, если хотя бы в одной строке #p есть null, то апдейт не проходит целиком

получается вообще странная вещь - если в выборке в любом поле в любой строке есть null, то она вся становиться пустой.

"Вот такая, панимашь, загогулина." (С)