执行以下SQL,报-6102: 数据溢出
SELECT MAX(20250807 * 1000000000 + 194340 * 100 +1)
运行截图如下:
登录数据库后,将CALC_AS_DECIMAL配置成3
sp_set_para_value(2,'CALC_AS_DECIMAL',3);
运行截图如下:
3、重启数据库生效
4、再次执行select,正常运行
在不能改配置的前提下可以使用以下SQL绕过
SELECT MAX(20250807 * 1000000000.0 + 194340 * 100 +1)
运行截图如下:
| 参数名 | 缺省值 | 属性 | 说明 |
|---|---|---|---|
| CALC_AS_DECIMAL | 0 | 静态 | 0:默认值,表示整数类型的除法、整数与字符或 BINARY 串的所有四则运算,结果都处理成整数;1:表示整数类型的除法全部转换为 DECIMAL 处理;2:表示将整数与字符或 BINARY 串的所有四则运算都转换为 DECIMAL 处理;3:所有涉及整型的四则运算全部转换为 DECIMAL 处理。注:该参数只有在USE_PLN_POOL为0或1时有效。当USE_PLN_POOL为2或3时,按照CALC_AS_DECIMAL=2处理 |
文章
阅读量
获赞
