
Работая с MSSQL из под Linux столкнулся с проблемой кривости работы драйверов DbLib. Это уже не первый случай, когда приходится решать определенные трудности. Ранее я писал, как заставить MSSQL отдавать данные в UTF-8, если кодировка данных - windows-1251. Данная заметка покажет, как решить проблему на такой платформе при работе с XML.
Итак, задача
Необходимо в хранимую процедуру передать несколько значений в один параметр, так, чтобы в хранимке эти значения было удобно получить.
Решение
В необходимый параметр передаем простую XML'ку, которую без труда разберем в хранимке.
Формирование XML:
Получение значений в хранимке:
Обратите внимание на INNER JOIN.
Но вот беда - возникает ошибка. При чем исполняя код в Management Studio все работает, а из под PHP - нет. Долго искал решение, гуглил, спрашивал и т.п.
К щастью не решаемых проблем нет. Вот класс Zend_Db адаптера, который устанавливает соотв. опции настроек для MSSQL Server, чтобы все проходило гладко:
Все дело в том, что для работы с XML необходимо установить настройки по-умолчанию, а РНР этого не делает. Надеюсь был полезен.
Обратите внимание: скидки киев
P.S. Вы не поверите, но создание сайта (особенно качественного) непростая задача, поэтому всегда обращайтесь к специалистам. Успехов!