我希望提取表格的一些列(Col1 和 2)并以 JSON 格式输入,并在每个节点中编写一些硬编码的 JSON,就像这样。
{ “col1”:“xxxx”,“col2”:“xxxx”,“hardcodedString”:“xxxx”,“hardcodedString”:“xxxx”,“hardcodedString”:“xxxx”,“hardcodedString”:“xxxx”,“硬编码字符串":"xxxx"},
我找到了以下 git 脚本,它创建了一个应该生成 JSON 的 SP,但是当我按要求执行时,我得到“命令已成功完成”
输出的任何想法,或者确实是实现我的 JSON 的更好方法?
create procedure [dbo].[GetJSON] (
    @schema_name varchar(50),
    @table_name varchar(50),
    @registries_per_request smallint = null
)
as
begin
    if ( ( select count(*) from information_schema.tables where table_schema = @schema_name and table_name = @table_name ) > 0 )
    begin
        declare @json varchar(max),
            @line varchar(max),
            @columns varchar(max),
            @sql nvarchar(max),
            @columnNavigator varchar(50),
            @counter tinyint,
            @size varchar(10)
        if (@registries_per_request is null)
        begin
            set @size = ''
        end
        else
        begin
            set @size = 'top ' + convert(varchar, @registries_per_request)
        end
        set @columns = '{'
        declare schemaCursor cursor for
            select column_name
            from information_schema.columns
            where table_schema = @schema_name
            and table_name = @table_name
        open schemaCursor
        fetch next from schemaCursor into @columnNavigator
        select @counter = count(*)
        from information_schema.columns
        where table_schema = @schema_name
        and table_name = @table_name
        while @@fetch_status = 0
        begin
            set @columns = @columns + '''''' + @columnNavigator + ''''':'''''' + convert(varchar, ' + @columnNavigator + ') + '''''''
            set @counter = @counter - 1
            if ( 0 != @counter )
            begin
                set @columns = @columns + ','
            end
            fetch next from schemaCursor into @columnNavigator
        end 
        set @columns =  @columns + '}'
        close schemaCursor
        deallocate schemaCursor
        set @json = '['
        set @sql = 'select ' + @size + '''' + @columns + ''' as json into tmpJsonTable from [' + @schema_name + '].[' + @table_name + ']'
        exec sp_sqlexec @sql
        select @counter = count(*) from tmpJsonTable
        declare tmpCur cursor for
            select * from tmpJsonTable
        open tmpCur
        fetch next from tmpCur into @line
        while @@fetch_status = 0
        begin
            set @counter = @counter - 1
            set @json = @json + @line
            if ( 0 != @counter )
            begin
                set @json = @json + ','
            end
            fetch next from tmpCur into @line
        end
        set @json = @json + ']'
        close tmpCur
        deallocate tmpCur
        drop table tmpJsonTable
        select @json as json
    end
end