论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
qidao123.com技术社区-IT企服评测·应用市场
»
论坛
›
数据库
›
Mysql
›
【DB2报错】执行存储过程报 SQLCODE:-420 SQLSTATE:2201 ...
【DB2报错】执行存储过程报 SQLCODE:-420 SQLSTATE:22018,办理方法在这里。 ...
忿忿的泥巴坨
论坛元老
|
2024-7-28 05:30:30
|
显示全部楼层
|
阅读模式
楼主
主题
2028
|
帖子
2028
|
积分
6084
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
执行存储过程的时候遇到这个报错:
Invalid character found in a character string argument of the function "DECFLOAT"...SQLSTATE:22018 SQLCODE:-420
不要慌!!遇事不决先翻译:
翻译:在函数 "DECFLOAT" 的字符串自变量中找到无效字符。
报错解释 :
原因分析:
处置惩罚方式:
情况一:
情况二:
报错解释 :
SQLCODE:-420
函数 函数名
(
这里指的是报错信息里的DECFLOAT
)
的字符串自变量包含在数字 SQL 常量中无效的字符。 由于使用 CAST 规范并将 函数名
(
DECFLOAT
)
作为目的数据类型,或者将一个自变量隐式强制类型转换为数字数据类型而调用了此函数。 用于 SQL 语句中的函数或数据类型可能是 函数名
(
DECFLOAT
)
的同义词。
SQLSTATE:
22018
CAST 规范 或者 CAST 标量函数的字符值无效。
用户响应:
更改 SQL 语句,使每个利用数或 VALUES 子句中的每行有完全相同的列数。
原因分析:
根据提示找到题目语句所在地方,是一个IF条件里的语句
/*--------------------------------------
情况一:字段类型说明
DEPTNO decimal(2,0)
--------------------------------------*/
SELECT COUNT(1) FROM EMP WHERE DEPTNO <> ''
/*---------------------------------------------
情况二:字段类型说明
var_col varchar(8)
var_col里的枚举值都是数字,也有''(空字符串)的情况
-----------------------------------------------*/
SELECT var_col FROM test_table WHERE var_col > 0
复制代码
处置惩罚方式
情况一:
SELECT COUNT(1) FROM EMP WHERE DEPTNO <> ''
这个判定是无效的,可以把条件去掉,但是在mysql那里是可以执行的。
ps:因为 DEPTNO 字段类型 decimal 它属于数值类型之一,所以字段本来就不允许出现空字符串的情况,所以where 条件那里不能够和 '' 进行比较。
情况二:
SELECT var_col FROM test_table WHERE var_col > 0:
假如不消 CAST 函数转换 var_col想和0比较改成以下两种语句之一就可以了:
# 和'0' 字符串进行比较
SELECT var_col FROM test_table WHERE var_col > '0'
# 用函数把0转成字符串
SELECT var_col FROM test_table WHERE var_col > to_char(0)
复制代码
ps:
假如字段类型是 varchar 类型你要对它进行数值比较,需要把值转成数字的字符串情势,所以例子中的 var_col varchar(8) 固然内里的值都是数字,但是和整数 0 比较会报错的。
另外假如 var_col 内里的数据 存在 ‘’ 两个引号的这种空字符串,这条sql 也会报错但是转成字符串就可以比较。
存储过程一定要用日志作为debug,方便找题目。
其他
报错
的原因码以及其他报错的错误状态码可以在下面 IBM 的链接检察。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
忿忿的泥巴坨
论坛元老
这个人很懒什么都没写!
楼主热帖
axios 传递参数的方式(data 与 params ...
Swift字符串操作-持续更新-2022 ...
【iOS逆向与安全】frida-trace入门 ...
springmvc异常处理解析#ExceptionHandl ...
Kubernetes(K8S) Controller - Deploym ...
食品商城网站设计—食品商城购物网站(8 ...
MVCC - Read View的可见性判断理解 ...
隐匿自己的c2服务器(一)
最佳实践-使用Github Actions来构建跨 ...
PHP001
标签云
渠道
国产数据库
集成商
AI
运维
CIO
存储
服务器
快速回复
返回顶部
返回列表