我目前正在开发一个项目,其中客户端需要有一个字段,在这种情况下,城市状态和邮政编码字段在视图中分为3个单独的字段。我确实找到了做得很好的代码,但是我遇到的问题是,城市状态和zip数据并不总是在同一列中。有时它位于shp_to_addr_2列中,有时它位于shp_to_addr_3列中。
代码最终会抛出一个参数错误,因为它有时会以传递给它的空值结束。我已经尝试使用变量来捕获包含数据的列,但最终还是会遇到这个令人讨厌的错误。这是我作为存储过程设置的代码,带有错误消息。我做错了什么?
[
{
"id": 243,
"user_id": 76,
"account_id": 1,
"unique_id": "12345",
"special_user_id": null,
},
{
"id": 244,
"user_id": 84,
"account_id": 1,
"unique_id": "123456",
"special_user_id": "staff_123456",
}
]
程序编译,但执行时我得到了这个:
Msg 537,Level 16,State 2,Procedure USER_SP_VI_USER_UPS_TRACK_2,第13行 传递给LEFT或SUBSTRING函数的长度参数无效。
答案 0 :(得分:0)
您只是将恰好来自表VI_USER_UPS_TRACK_2
的最后一行提取到变量@address
中,并根据您进入不同的路径。我假设你的表中有很多行,所以你的逻辑根本不起作用。
您需要编写一个case语句来检查您正在处理的各个行,并根据该行获取数据。
此外,@address
是过程的输入参数,但是您在过程的开头覆盖了该值。