Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / mssql Select из XML / 5 сообщений из 5, страница 1 из 1
16.02.2022, 14:45
    #40134531
glamis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mssql Select из XML
Пытаюсь подружить mssql и XML
Нашел вот такой скрипт:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
CREATE CURSOR x1 (pole1 C(10), pole2 I)
INSERT INTO x1 (pole1, pole2) VALUES ('111111',1)
INSERT INTO x1 (pole1, pole2) VALUES ('222222',2)
INSERT INTO x1 (pole1, pole2) VALUES ('333333',3)
INSERT INTO x1 (pole1, pole2) VALUES ('444444',4)
INSERT INTO x1 (pole1, pole2) VALUES ('555555',5)
CURSORTOXML('x1', '_xml',1)

text to _script textmerge noshow pretext 7
   DECLARE @xml xml
   SET @xml=?_xml
   SELECT @xml = CAST(CAST(@xml AS VARBINARY(MAX)) AS XML) 
   SELECT 
          x.Rec.query('./pole1').value('.', 'char(10)') AS 'Pole1',
          x.Rec.query('./pole2').value('.', 'int') AS 'Pole2'
   FROM @xml.nodes('/VFPData/x1') as x(Rec)
endtext

=sqlexec(_sqlconnect, _script, 'x1')


Пытаюсь выполнить - возвращает
1934 Connectivity error: [Microsoft][ODBC SQL Server Driver][SQL Server]Ошибка SELECT. Следующие параметры SET содержат неверные значения: "ARITHABORT". Убедитесь, что параметры SET содержат значения, подходящие для использования с индексированные представлени
...
Рейтинг: 0 / 0
16.02.2022, 15:45
    #40134555
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mssql Select из XML
Скопируй (или запости сюда) из _script текст и выполни в SSMS.
...
Рейтинг: 0 / 0
16.02.2022, 16:43
    #40134574
glamis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mssql Select из XML
Поборол. Может кому пригодится...

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
CREATE CURSOR x1 (pole1 C(10), pole2 I)
INSERT INTO x1 (pole1, pole2) VALUES ('111111',1)
INSERT INTO x1 (pole1, pole2) VALUES ('222222',2)
INSERT INTO x1 (pole1, pole2) VALUES ('333333',3)
INSERT INTO x1 (pole1, pole2) VALUES ('444444',4)
INSERT INTO x1 (pole1, pole2) VALUES ('555555',5)
CURSORTOXML('x1', '_xml',1)
PRIVATE _xml2, _xml3
_xml2=_xml
TEXT TO _xml3 TEXTMERGE NOSHOW PRETEXT 7
	SET ARITHABORT ON
	DECLARE @xml xml, @str varchar(2000)
	SELECT @xml = CAST(CAST(?_xml2 AS VARBINARY(MAX)) AS XML) 

	SELECT 
	    x.Rec.query('./pole1').value('.', 'char(10)') AS 'Pole1',
	    x.Rec.query('./pole2').value('.', 'int') AS 'Pole2'
	FROM @xml.nodes('/VFPData/x1') as x(Rec)
	SET ARITHABORT Off
ENDTEXT 



Согласно описанию SET ARITHABORT ON работает только в текущем соединении.
SET ARITHABORT Off поставил на всяк.случ.
...
Рейтинг: 0 / 0
16.02.2022, 21:49
    #40134660
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mssql Select из XML
Насколько я понял, необходимость включать ARITHABORT при работе с XML зависит от установленного уровня совместимости. Это в свойствах базы данных SQL. Называется "Compatibility level"

При значении 100 и больше настройка ARITHABORT не требуется
...
Рейтинг: 0 / 0
16.02.2022, 21:52
    #40134662
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mssql Select из XML
Не помню, с какой версии ввели эти служебные вьюхи в SQL, но можно так посмотреть.

Код: sql
1.
SELECT compatibility_level from sys.databases where name='Имя_Базы_Данных'
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / mssql Select из XML / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]