gpt4 book ai didi

sql-server - 如何避免sp_OACreate限制?

转载 作者:行者123 更新时间:2023-12-01 12:50:42 25 4
gpt4 key购买 nike

Declare @Object as Int; 
Declare @ResponseText as Varchar(8000);
Declare @Url as Varchar(MAX);

set @Url = 'http://mysite.ru/cgi-bin/my_xml.cgi'

Exec sp_OACreate 'MSXML2.XMLHTTP', @Object OUT;
Exec sp_OAMethod @Object, 'open', NULL, 'get', @Url, 'false'
Exec sp_OAMethod @Object, 'send'
Exec sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT
Exec sp_OADestroy @Object

SELECT @ResponseText

URL 中的 XML 长度为 4210,@ResponseText 返回 NULL ,当我将长度更改为 3970 @ResponseText 返回数据时。 sp_OACreate 有限制 400 吗?如果是的话是否可以避免?

最佳答案

尽管您的帖子主题如此,但我认为问题可能出在 sp_OAMethod 而不是 sp_OACreate 本身。

恕我直言,应该不惜一切代价避免从 sql 代码访问网络,但这只是我的观点,因为我不喜欢 RDBMS“上网冲浪”的想法。 ^^

为了规避 sp_OAMethod 的限制,您可以尝试详细说明 msdn 上的答案.

你的代码应该是这样的:

Declare @Object as Int; 
Declare @ResponseText as Varchar(8000);
Declare @Url as Varchar(MAX);

set @Url = 'http://mysite.ru/cgi-bin/my_xml.cgi'

Exec sp_OACreate 'MSXML2.XMLHTTP', @Object OUT;
Exec sp_OAMethod @Object, 'open', NULL, 'get', @Url, 'false'
Exec sp_OAMethod @Object, 'send'
--Exec sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT

INSERT #temptable ( appropriatefield )
EXEC @Result = sp_OAGetProperty @Obj, 'YourPropertyName'

Exec sp_OADestroy @Object

该解决方案需要一个具有适当结构和数据类型的临时表来存储远程页面生成的值,这应该允许您获取超过 4k 的数据。

关于sql-server - 如何避免sp_OACreate限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27424068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com