是否可以通过MSSQL对给出表格的url进行请求,以表格的形式显示出来?
declare @xmlhttp int
declare @hr int
declare @text char(8000)
exec sp_OACreate 'Msxml2.XMLHTTP', @xmlhttp out
exec @hr=sp_OAMethod @xmlhttp, 'open', NULL, 'GET',
'http://10.0.0.0:8080/API/flat?token=c57aa1', false
if @hr=0 exec @hr = sp_OAMethod @xmlhttp,
'setRequestHeader', null, 'Content-Type', 'text/html'
if @hr=0 exec @hr = sp_OAMethod @xmlhttp, 'send', NULL, null
-- тут hr равен нолю - без ошибок
if @hr=0 exec @hr = sp_OAGetProperty @xmlhttp,
'responseText', @text out;
--- тут возникают ошибки "конвертации"
当responseText
超过 8000 个字符时出现问题 - 然后无法读取它(MSSQL 对字符串大小的限制)。如果其他方式从另一台服务器获取 json 表并在 MSSQL 中处理?
UPD:而且......就像......不可能将文本转换为表格(之前我通过xml编写了一个变态,它通过xml工作)。写作...
SELECT
cast((select value from OPENJSON(value)
where [key]='id') as int) id,
cast((select value from OPENJSON(value)
where [key]='name') as varchar(32)) name
FROM OPENJSON( (select x from @tab) )
看起来没问题,我把它放在存储中并执行一个 exec 然后......
消息 208,级别 16,状态 1,过程 update_rest2,第 32 行 [批处理开始第 2 行] 对象名称“OPENJSON”无效。
json视图[{"id":18120,"name":"Smart"},{"id":18124,"name":"Smart4"}]
有没有人遇到过这样的笑话?不能在存储中工作,但在没有存储的情况下工作(服务器 2016)
最后变成了这样
[{"id":18120,"name":"Smart"},{"id":18124,"name":"Smart4"}]
并像这样解析查询OPENJSON从2016服务器开始有效,早期版本可以通过xml解析,但是如果OPENJSON在2016+版本不支持,需要
ALTER DATABASE YourBase SET COMPATIBILITY_LEVEL = 130
在不支持的账号下运行请求。通过 xml 变体(2005 年工作)
链接