xml из хранимки в vfp | |
---|---|
s_gsm Автор Сообщений: 6 Дата регистрации: 28.06.2019 |
Товарищи, помогите, пожалуйста. Есть хранимка на mssql 11. Возвращает набор данных (одна строка в том числе с полем типа xml), и OUTPUT параметры, один из которых тот же xml. Как мне в VFP 9 с использованием sqlexec получить эту xml?? Memo-поле в наборе данных возвращается пустым (( Хранимка для изменений не доступна. Спасибо заранее
|
Re: xml из хранимки в vfp | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Какой драйвер используется? С новыми типами надо бы драйвер из состава Native Client использовать.
Ну и простейший пример для воспроизведения проблемы был бы уместен (в т.ч. текст хранимки возвращающей хотя бы просто сгенерированные в ней же данные). ------------------ WBR, Igor |
Re: xml из хранимки в vfp | |
---|---|
PaulWist Сообщений: 14601 Дата регистрации: 01.04.2004 |
Использовать сурворадаптер, либо cast(xml as varchar(8000)
------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: xml из хранимки в vfp | |
---|---|
s_gsm Автор Сообщений: 6 Дата регистрации: 28.06.2019 |
SQL Server Native 11.0 и используется ((
Это в management studio: DECLARE @return_value int, @RESULT int, @COUNT int, @XML_REPLY xml EXEC @return_value = [dbo].[API_EXPORT_SPD] @BANK_NUMBER = N'1111/2222', @SPD_DATE_FROM = '2019-05-22', @SPD_DATE_TO = '2019-05-22', @RESULT = @RESULT OUTPUT, @COUNT = @COUNT OUTPUT, @XML_REPLY = @XML_REPLY OUTPUT SELECT @RESULT as N'@RESULT', @COUNT as N'@COUNT', @XML_REPLY as N'@XML_REPLY' SELECT 'Return Value' = @return_value GO Это в фоксе: m._v_return_value = 0 m._v_result = 0 m._v_count = 0 m._v_xml_reply = SPACE(100000) && уж не знаю что тут задавать m._v_bank_number = m.Our_Regn && "1111/2222" m._v_spd_date_from = DTOS(m._v_date) && "20190522" m._v_spd_date_to = DTOS(m._v_date) && "20190522" m._v_cmd = "Execute dbo.API_EXPORT_SPD @BANK_NUMBER=?m._v_bank_number,@SPD_DATE_FROM=?m._v_spd_date_from,@SPD_DATE_TO=?m._v_spd_date_to" *//m._v_cmd = "Execute dbo.API_EXPORT_SPD @BANK_NUMBER=?m._v_bank_number,@SPD_DATE_FROM=?m._v_spd_date_from,@SPD_DATE_TO=?m._v_spd_date_to,@RESULT=?@m._v_result,@COUNT=?@m._v_count,@XML_REPLY=?@m._v_xml_reply" m._v_ret = SQLEXEC(m._v_h_srv2, m._v_cmd, "_c_1") |
Re: xml из хранимки в vfp | |
---|---|
s_gsm Автор Сообщений: 6 Дата регистрации: 28.06.2019 |
Извините, а где и как использовать cast() ?
|
Re: xml из хранимки в vfp | |
---|---|
s_gsm Автор Сообщений: 6 Дата регистрации: 28.06.2019 |
И вот текст ошибки если я вызываю хранимку с OUTPUT параметром:
Connectivity error: [Microsoft][SQL Server Native Client 11.0][SQL Server]Implicit conversion from data type xml to varchar is not allowed. Use the CONVERT function to run this query. Извините, а где этот CONVERT вставлять?? |
Re: xml из хранимки в vfp | |
---|---|
PaulWist Сообщений: 14601 Дата регистрации: 01.04.2004 |
SELECT @RESULT as N'@RESULT',
@COUNT as N'@COUNT', Cast(@XML_REPLY as varchar(8000)) as N'@XML_REPLY' Только надо учесть, что xml может быть больше 8000, тогда его надо на стороне сервера порезать на порции и передать в фокс, где его надо склеить ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: xml из хранимки в vfp | |
---|---|
s_gsm Автор Сообщений: 6 Дата регистрации: 28.06.2019 |
Это на стороне сервера, да? У меня нет возможности лезть в базу (( я могу только вызвать хранимку из фокса и все. Это база с апи к ней от разработчика коробочного софта. И когда я вызываю хранимку, то она просто возвращает вышеприведенную ошибку или пустое memo (
|
Re: xml из хранимки в vfp | |
---|---|
PaulWist Сообщений: 14601 Дата регистрации: 01.04.2004 |
Используй курсорадаптер для вызова ХП
------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: xml из хранимки в vfp | |
---|---|
PaulWist Сообщений: 14601 Дата регистрации: 01.04.2004 |
Эээ, как бы некоторое несоотвествие в словах, если можешь выполнить этот код:
значит доступ к БД есть. Осталось выяснить есть ли права на create procedure, если они есть, то проблема решается как 2 пальца. Пишешь обертку надо исходной ХП
На стороне фокса выpываешь свою обёртку:
------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: xml из хранимки в vfp | |
---|---|
s_gsm Автор Сообщений: 6 Дата регистрации: 28.06.2019 |
О! Спасибо большое ) Мысль понял. А я вчера помудрил-поискал и решил-таки так:
m._v_cmd = ; "DECLARE @return_value int,@RESULT int,@COUNT int,@XML_REPLY xml;" + ; "EXEC @return_value = [dbo].[API_EXPORT_SPD] " + ; "@BANK_NUMBER = N'1111/2222', " + ; "@SPD_DATE_FROM = '2019-05-22', " + ; "@SPD_DATE_TO = '2019-05-22', " + ; "@RESULT = @RESULT OUTPUT, " + ; "@COUNT = @COUNT OUTPUT, " + ; "@XML_REPLY = @XML_REPLY OUTPUT;" + ; "SELECT CAST( cast(@XML_REPLY as varchar(max)) as text) as XML_REPLY_T;" m._v_ret = SQLEXEC(m._v_h_srv2, m._v_cmd, "_c_0") и в _с_01.XML_REPLY_T получил текст Ваш код попробую конечно, только я вот еще не знаю какие права у пользователей моих.. Спасибо !! |
© 2000-2024 Fox Club  |