Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 htttp  [new]
feelka88
Member

Откуда:
Сообщений: 7
Есть скрипт, который почему то не выполняется:

alter procedure HTTP_POST( @sUrl varchar(200), @response varchar(8000) out, @error varchar(100) out)
As


Declare
@obj int
,@hr int
,@status int
,@msg varchar(255)
,@t nvarchar


exec @hr = sp_OACreate 'MSXML2.ServerXMLHttp', @obj OUT
-- exec @hr = sp_OACreate 'MSXML2.ServerXMLHttp', @obj OUT
if @hr <> 0 begin Raiserror('sp_OACreate MSXML2.ServerXMLHttp.3.0
failed', 16,1) return end


exec @hr = sp_OAMethod @obj, 'open', NULL, 'GET', @sUrl, false
if @hr <>0 begin set @msg = 'sp_OAMethod Open failed' goto eh end


exec @hr = sp_OAMethod @obj, 'setRequestHeader', NULL, 'Content-Type',
'application/x-www-form-urlencoded'
if @hr <>0 begin set @msg = 'sp_OAMethod setRequestHeader failed' goto
eh end


exec @hr = sp_OAMethod @obj, send, NULL, ''
if @hr <>0 begin set @msg = 'sp_OAMethod Send failed' goto eh end


exec @hr = sp_OAGetProperty @obj, 'status', @status OUT
if @hr <>0 begin set @msg = 'sp_OAMethod read status failed' goto
eh
end


if @status <> 200 begin set @msg = 'sp_OAMethod http status ' +
str(@status) goto eh end


exec @hr = sp_OAGetProperty @obj, 'responseText', @response OUT
if @hr <>0 begin set @msg = 'sp_OAMethod read response failed' goto
eh end

exec @hr = sp_OADestroy @obj
return
eh:
exec @hr = sp_OADestroy @obj
set @error = @msg
return
 @t
GO



Вот так я выполняю его :

exec [HTTP_POST] 'http://test.ru/test.aspx'

Вот что получаю:

Msg 201, Level 16, State 4, Procedure HTTP_POST, Line 0
Procedure or function 'HTTP_POST' expects parameter '@response', which was not supplied.
Помогите разобрать пожалуйста !!

Сообщение было отредактировано: 24 авг 15, 13:49
24 авг 15, 13:41    [18059843]     Ответить | Цитировать Сообщить модератору
 Re: htttp  [new]
Konst_One
Member

Откуда:
Сообщений: 11540
feelka88
@response varchar(8000) out, @error varchar(100) out)


вот эти параметры надо передать при вызове
24 авг 15, 13:44    [18059857]     Ответить | Цитировать Сообщить модератору
 Re: htttp  [new]
Konst_One
Member

Откуда:
Сообщений: 11540
declare @response varchar(8000) = '', @error varchar(100) = ''

exec [HTTP_POST] 'http://test.ru/test.aspx', @response out, @error out

select @response as [ответ], @error as [ошибка] 
24 авг 15, 13:46    [18059874]     Ответить | Цитировать Сообщить модератору
 Re: htttp  [new]
feelka88
Member

Откуда:
Сообщений: 7
Konst_One,

Спасибо за помощь!
Скрипт отрабатывает с таким результатом:
sp_OAMethod Send failed

В message вижу вот это:
The 'HTTP_POST' procedure attempted to return a status of NULL, which is not allowed. A status of 0 will be returned instead.

(1 row(s) affected)
24 авг 15, 14:03    [18059978]     Ответить | Цитировать Сообщить модератору
 Re: htttp  [new]
Konst_One
Member

Откуда:
Сообщений: 11540
exec @hr = sp_OAMethod @obj, 'send', NULL, ''
24 авг 15, 14:10    [18060007]     Ответить | Цитировать Сообщить модератору
 Re: htttp  [new]
feelka88
Member

Откуда:
Сообщений: 7
Konst_One,

Все равно такая же ошибка

The 'HTTP_POST' procedure attempted to return a status of NULL, which is not allowed. A status of 0 will be returned instead.

(1 row(s) affected)


Что сделать с этим скриптом или может быть какое-то другое решение подскажите?
27 авг 15, 12:53    [18075911]     Ответить | Цитировать Сообщить модератору
 Re: htttp  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
feelka88
Konst_One,

Все равно такая же ошибка

The 'HTTP_POST' procedure attempted to return a status of NULL, which is not allowed. A status of 0 will be returned instead.

(1 row(s) affected)


Что сделать с этим скриптом или может быть какое-то другое решение подскажите?


Ну так Оно же и пишет про возвращаемый НУЛЛ, всуньте туда что-то приличное

Declare
@obj int
,@hr int
,@status int
,@msg varchar(255)
,@t nvarchar

...
return
@t
27 авг 15, 12:58    [18075959]     Ответить | Цитировать Сообщить модератору
 Re: htttp  [new]
feelka88
Member

Откуда:
Сообщений: 7
Winnipuh,

Что вы имеете ввиду под словом "приличное"?
27 авг 15, 13:11    [18076087]     Ответить | Цитировать Сообщить модератору
 Re: htttp  [new]
feelka88
Member

Откуда:
Сообщений: 7
Я только потихоньку приспосабливаю себя под SQL
Впринципе у меня вопрос в том, чтобы проверить доступность URL, лежащих в другой таблице, (получить 200) и записать результаты в другую таблицу. У меня получилось это сделать PowerShell'ом, но после выгрузки таблицы, а это занимает много времени и ресурсов.

Буду очень признателен любой помощи)
27 авг 15, 13:15    [18076134]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить