小编Bri*_* SP的帖子

SQL Server - “for json path”语句返回的 JSON 字符串不超过 2984 行

我正在尝试使用“for json path”语句在复杂且嵌套的 JSON 字符串中生成大量数据,并且我使用多个函数来创建此 JSON 字符串的不同部分,如下所示:

declare @queue nvarchar(max)

select @queue = (
    select x.ID as layoutID
        , l.Title as layoutName
        , JSON_QUERY(queue_objects (@productID, x.ID)) as [objects]
    from Layouts x
    inner join LayoutLanguages l on l.LayoutID = x.ID
    where x.ID = @layoutid
    group by x.ID, l.Title
    for json path
)

select @queue as JSON
Run Code Online (Sandbox Code Playgroud)

到目前为止,JSON 将是:

{
    "root": [{
        "layouts": [{
            "layoutID": 5
            , "layoutName": "foo"
            , "objects": []
        }]
    }]
}
Run Code Online (Sandbox Code Playgroud)

然后将调用“queue_objects”函数来填充“objects”数组:

队列对象

select 0 as objectID
    , …
Run Code Online (Sandbox Code Playgroud)

sql json sql-server-2016 json-query for-json

7
推荐指数
1
解决办法
1万
查看次数

C - getaddrinfo 返回“ai_socktype 不支持 Servname”

所以,在我收到这个错误后,我一直在这里寻找答案,几乎每个人都有一个困难的方法来修复这个错误,但没有人解释为什么会出现这个错误,所以我不认为这个问题是完全重复。

我用 C 语言编写了一个 TCP 套接字,并使用“getaddrinfo”函数使套接字与主机名一起工作,效果非常好!你可以在github上找到我的代码。

但是当我尝试通过“getaddrinfo”创建UDP 套接字时,出现此错误:
ai_socktype 不支持 Servname

客户端.c

const char *host = argv[1];
const char *service = argv[2];
const char *string = argv[3];

struct addrinfo addrCriteria;
memset(&addrCriteria, 0, sizeof(addrCriteria));
addrCriteria.ai_family = AF_UNSPEC;
addrCriteria.ai_socktype = SOCK_DGRAM;
addrCriteria.ai_protocol = IPPROTO_UDP;

struct addrinfo *servAddr;
int ret = getaddrinfo(host, service, &addrCriteria, &servAddr);
if(ret != 0)
    sysError(gai_strerror(ret));
Run Code Online (Sandbox Code Playgroud)

我意识到,当我给“service”提供像 8080 这样的数字输入时,不会返回任何错误,但是当我使用指向端口/8081 的字符串作为服务名称(例如“tproxy”)时,“gai_strerror”会返回提到的错误。

显然,gai_strerror 说:“‘SOCK_DGRAM’套接字类型不支持服务名称”,但为什么呢?我的意思是“getaddrinfo”不支持 UDP 套接字上的名称服务的确切原因?
有没有其他方法可以使用 UDP 套接字的服务名称而不是端口号?如何?

c sockets udp getaddrinfo

5
推荐指数
1
解决办法
3万
查看次数

SQL Server - 使用交叉应用或 openjson 或任何东西递归地进入嵌套的 JSON 数组

我一直在阅读尽可能多的同一问题的问题和答案,但我想我的问题需要更多创造性的方法。

所以我这里有一个 JSON 字符串:

declare @json nvarchar(max) =
'{
    "propertyObjects": [{
        "propertyID": 1
        , "title": "foo"
        , "class": ""
        , "typeid": 150
        , "value": "bar"
        , "children": [{}]
    }, {
        "propertyID": 2
        , "title": "foo"
        , "class": ""
        , "typeid": 128
        , "value": "bar"
        , "children": [{}]
    }, {
        "propertyID": 3
        , "title": "foo"
        , "class": ""
        , "typeid": 128
        , "value": "bar"
        , "children": [{
            "propertyID": 4
            , "title": "foo"
            , "class": ""
            , "typeid": 128
            , "value": "bar" …
Run Code Online (Sandbox Code Playgroud)

sql sql-server recursion json sql-server-2016

4
推荐指数
1
解决办法
4018
查看次数