Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / sp_OACreate и т.п. / 3 сообщений из 3, страница 1 из 1
19.07.2002, 12:07:47
    #32037718
AAron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sp_OACreate и т.п.
Всем привет.
Хотелось бы создать такую вещь с использованием sp_OAxxx процедур.

есть XML на определенном УРЛ (@url)
есть 'MSXML2.DOMDocument.4.0' (@msxml)
есть 'MyCOM' (@mycom)

итак, хочется получить XML с указанного урл, запихнуть его в MSXML и передать полученный объект в MyCOM

получилось все, кроме вызова метода MyCOM с параметром MSXML2.DOMDocument.4.0

примерный текст пакета ниже.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
SET NOCOUNT ON 
DECLARE @mycom int, @msxml int
DECLARE @hr int, @retValue int
DECLARE @src varchar( 8000 ), @desc varchar( 8000 )

 /*создание MyCOM*/ 
EXEC @hr = sp_OACreate 'MyCOM', @mycom OUT
IF @hr <>  0 
BEGIN
	EXEC sp_OAGetErrorInfo @mycom, @src OUT, @desc OUT 
	RETURN
END

 /*создание MSXML*/ 
EXEC @hr = sp_OACreate 'MSXML2.DOMDocument.4.0', @msxml OUT
IF @hr <>  0 
BEGIN
	EXEC sp_OAGetErrorInfo @msxml
	RETURN
END

 /*установка свойства*/ 
EXEC @hr = sp_OASetProperty @msxml, 'async',  0 
IF @hr <>  0 
BEGIN
	EXEC sp_OAGetErrorInfo @msxml
	RETURN
END

 /*загрузка XML*/ 
EXEC @hr = sp_OAMethod @msxml, 'Load', @desc OUT, @url
IF @hr <>  0 
BEGIN
	EXEC sp_OAGetErrorInfo @msxml
	RETURN
END

 /*проверка XML*/ 
EXEC @hr = sp_OAGetProperty @msxml, 'xml', @desc OUT
IF @hr <>  0 
BEGIN
	EXEC sp_OAGetErrorInfo @msxml
	RETURN
END

PRINT 'XML'
SELECT @desc
PRINT ''

 /*проверка XML*/ 
EXEC @hr = sp_OAGetProperty @msxml, 'parseError', @retValue OUT
IF @hr <>  0 
BEGIN
	EXEC sp_OAGetErrorInfo @msxml
	RETURN
END

SELECT 'Parsing: ', @retValue

PRINT 'Starting xCompute'
 /*запуск калькулятора*/ 
EXEC @hr = sp_OAMethod @mycom, 'xCompute', @vRetValue OUT, @msxml
IF @hr <>  0 
BEGIN
	EXEC sp_OAGetErrorInfo @mycom
	RETURN
END


MyCOM должен возвращать объект типа 'MSXML2.DOMDocument.4.0' (то бишь как и входящий объект).
Проблема с последним вызовом. При запуске вылетает сообщение 0x80020005 ODSOLE Extended Procedure Несовпадение типов .

Я так понимаю, что неправильно передается входной параметр @msxml. Он ведь типа int , а ожидается MSXML-объект.

Вопрос в том, можно ли сделать такую вещь? Если можно, то как передавать в качестве параметров объекты?
Кстати, еще вопрос. Как объявить OUTPUT-параметр в SP_OAMethod, чтобы принимать 2-мерный массив
...
Рейтинг: 0 / 0
19.07.2002, 16:42:15
    #32037797
jimmers
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sp_OACreate и т.п.
Result Sets
If the method return value is an array with one or two dimensions, the array is returned to the client as a result set:

A one-dimensional array is returned to the client as a single-row result set with as many columns as there are elements in the array. In other words, the array is returned as (columns).


A two-dimensional array is returned to the client as a result set with as many columns as there are elements in the first dimension of the array and with as many rows as there are elements in the second dimension of the array. In other words, the array is returned as (columns, rows).
...
Рейтинг: 0 / 0
19.07.2002, 16:59:02
    #32037799
AAron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sp_OACreate и т.п.
Спасибо, но это я уже читал.

Здесь к сожалению только сказано, как возвращается 1-2 мерный массив (на мой взгляд не удобно возвращают 1-мерные массивы). А как его потом обработать? Попытаться прицепить курсор?

Опять же, ничего не сказано по поводу передачи дескрипторов объектов в другой объект и получении оных обратно...

может задача вообще не имеет решения в T-SQL и проще написать DTS, который затем запускать уже из T-SQL?
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / sp_OACreate и т.п. / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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