MySql json型字段使用小记-json数组类型初始化

MySQL 可以支持JSON 字段了, 非常的符合时代潮流,对于某些操作非常方便。但是使用时,也要处处小小心才行。笔者在今日开始写mysql的存贮过程,由于mysql 没有数组的支持,考虑使用JSON 类型。

考虑下面的代码片段

 
   ................. 
   -- 初始化这个json 类型变量
    set sp_PkArr="";
    
	..... 
	call sp_GetPkArr(sp_PkArr);
	.........
    

其中 sp_GetPkArr 的定义如下

sp_GetPkArr(out pkArr json) `

编译正常,没有错误,一运行就返回如下错误:

DB error found , error = 22032, message = Invalid JSON text: “The document is empty.” at position 0 in value for column ‘.sp_PkArr’.

由于器提示过于模糊,因此不知道是哪里导致的错误,是sp_GetPkArr里面.还是调用过程,进行了各种恶心的调试之后,问题仍然没有解决。后来突然意识到,这个错误可能就是参数不符合要求造成的。将上面的调用代码,改成

  
   ................. 
   -- 初始化这个json 类型变量
    set sp_PkArr="[]";
    
	..... 
	call sp_GetPkArr(sp_PkArr);
	.........
    

再次调用就没有错误了,这里的使用说明,mysql存贮过程在调用时,参数阶段就开始检查数据类型了。

经验:
Json 类型的变量,一定要初始化成json的对象格式,否则就会出错。

一个重要补充:

在WorkBench中,输入如下测试代码

        set @pkArr="";
        call sp_GetPkToPostToFront(@pkArr);
        select @pkArr;

并没有产生上述错误,这也是笔者屡屡不能发现错误的一个原因。这段代码说明,mysql 对session 变量的处理和declare变量的处理机制是不一样的,大家也要注意。

maraSun 2021-12-05 BJFUDQ

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值