benny111 发表于 2024-5-16 14:39:52

存储过程生成的JSON到不了表

如题目,可能要通过服务器端命令,但是我试写了,也没有用。请帮助改一下,工程文发了,谢谢,目的:存储过程出来的JSON到表里
下面是存储过程:



CREATE PROCEDURE P_CS001 (@SCDate as datetime,@ECDate as datetime)
as
declare @json NVARCHAR(MAX)
begin
set @json = (select ProjectID,ProjectName from BProject FOR JSON PATH)
select @json
end


Lay.Li 发表于 2024-5-16 14:39:53

您好,sql我们不是很了解,这里看了一下您的存储过程,查了一下,如果要是用from json path的话,是要用root指定一下根节点


而且这里写了两个select不清楚是不是这里的原因。

存储过程的写法,您可以检查一下,回到活字格中的话,这里执行存储过程查询出来本身就是有Cloumn1的

在活字格中执行存储过程返回的就是上图中的结果,是一个大的数组(G_PD),数组中有一个对象,对象的键是Cloumn1,值是数组。所以G_PD.0就是去数组的第一个元素,也就是cloumn1:project数组的这个对象,然后再使用.去G_PD.0.Column1 就获取到了project这个数组

VVANVI 发表于 2024-5-16 16:06:59

不用@json 直接 只要select ProjectID,ProjectName from BProject这个就好了, 可以试试

benny111 发表于 2024-5-16 16:23:05

VVANVI 发表于 2024-5-16 16:06
不用@json 直接 只要select ProjectID,ProjectName from BProject这个就好了, 可以试试

大哥存储过程是前提。我当然知道直接select更方便。我就要存储过程出json到表格。使用场景您感兴趣我们可以私聊

小白学员 发表于 2024-5-16 16:41:40

本帖最后由 小白学员 于 2024-5-16 16:48 编辑

你调试一下看,你看看你拿到的是JSON还是数组???

如果不是JSON,那就处理咯。

确保你拿到的是JSON,你再JSON到表。



我就不给你写过程了,我也是小白。实在搞不定就留个Q吧。

Nathan.guo 发表于 2024-5-16 18:11:57

这个是因为大佬的json数据结构和导出入json到表格命令设置不一致

修改之后就正常导入了


benny111 发表于 2024-5-17 11:48:43

Nathan.guo 发表于 2024-5-16 18:11
这个是因为大佬的json数据结构和导出入json到表格命令设置不一致

修改之后就正常导入了

以下几个问题看不懂,请回复,谢谢
1)存储过程直接跑出Json是没有Column1,在你在存储过程调用命令后就直接用了「导入JSON数据到表格->JSON数据源-> =G_PD.0.Column1」这个Column1是怎么来呢
2)Column1是「Json序列化命令」才有的(不知道为什么序列化会有Column1)
3)=G_PD.0.Column1里面的0是什么意思呢
页: [1]
查看完整版本: 存储过程生成的JSON到不了表