[20250722]使用toad的小问题.txt --//无意中测试发现toad的小问题,如果带入绑定变量是整形,如果数值很大会报错。 SELECT OWNER ,OBJECT_NAME ,SUBOBJECT_NAME ,OBJECT_TYPE ,DECODE (EXTRACTVALUE (NOTES, '/obj_note/equality_predicates_only'), 'YES', 'E') ALLEQ ,DECODE (EXTRACTVALUE (NOTES, '/obj_note/simple_column_predicates_only'), 'YES', 'C') ALLCOLS ,DECODE (EXTRACTVALUE (NOTES, '/obj_note/index_access_by_join_predicates'), 'YES', 'J') NLJNIX ,DECODE (EXTRACTVALUE (NOTES, '/obj_note/filter_on_joining_object'), 'YES', 'F') FILTER ,NUM_ROWS FROM SYS.DBA_SQL_PLAN_DIR_OBJECTS WHERE DIRECTIVE_ID = :B1 ORDER BY OBJECT_TYPE DESC ,OWNER ,OBJECT_NAME ,SUBOBJECT_NAME --//带入13972766652855831375会报错。提示 ''13972766652855831375'' is not a valid integer value --//sqlplus下没有这个问题: $ cat ga.txt variable B1 number ; exec :B1 := &&1; SELECT OWNER ,OBJECT_NAME ,SUBOBJECT_NAME ,OBJECT_TYPE ,DECODE (EXTRACTVALUE (NOTES, '/obj_note/equality_predicates_only'), 'YES', 'E') ALLEQ ,DECODE (EXTRACTVALUE (NOTES, '/obj_note/simple_column_predicates_only'), 'YES', 'C') ALLCOLS ,DECODE (EXTRACTVALUE (NOTES, '/obj_note/index_access_by_join_predicates'), 'YES', 'J') NLJNIX ,DECODE (EXTRACTVALUE (NOTES, '/obj_note/filter_on_joining_object'), 'YES', 'F') FILTER ,NUM_ROWS FROM SYS.DBA_SQL_PLAN_DIR_OBJECTS WHERE DIRECTIVE_ID = :B1 ORDER BY OBJECT_TYPE DESC ,OWNER ,OBJECT_NAME ,SUBOBJECT_NAME; SYS@book01p> @ ga.txt 13972766652855831375 PL/SQL procedure successfully completed. OWNER OBJECT_NAME SUBOBJECT_NAME OBJECT_TYPE A A N FILTER NUM_ROWS ----- ----------- -------------- ----------- - - - ------ -------- SYS OBJ$ TABLE F SYS X$KSPPCV TABLE F SYS X$KSPPI TABLE F SCOTT@book01p> select min(DIRECTIVE_ID) from dba_sql_plan_directives; MIN(DIRECTIVE_ID) -------------------- 24160170414108990 --//17个数字组成。 SYS@book01p> @ ga.txt 24160170414108990 PL/SQL procedure successfully completed. OWNER OBJECT_NAME SUBOBJECT_NAME OBJECT_TYPE A A N FILTER NUM_ROWS ------ ----------- --------------- ------------------------------ - - - ------ -------- AUDSYS AUD$UNIFIED TABLE AUDSYS AUD$UNIFIED EVENT_TIMESTAMP COLUMN --//在toad下带入24160170414108990查询没有报上面的错误,但是没有结果输出。 --//使用自带的sqldbmon.exe跟踪: SELECT OWNER ,OBJECT_NAME ,SUBOBJECT_NAME ,OBJECT_TYPE ,DECODE (EXTRACTVALUE (NOTES, '/obj_note/equality_predicates_only'), 'YES', 'E') ALLEQ ,DECODE (EXTRACTVALUE (NOTES, '/obj_note/simple_column_predicates_only'), 'YES', 'C') ALLCOLS ,DECODE (EXTRACTVALUE (NOTES, '/obj_note/index_access_by_join_predicates'), 'YES', 'J') NLJNIX ,DECODE (EXTRACTVALUE (NOTES, '/obj_note/filter_on_joining_object'), 'YES', 'F') FILTER ,NUM_ROWS FROM SYS.DBA_SQL_PLAN_DIR_OBJECTS WHERE DIRECTIVE_ID = :B1 ORDER BY OBJECT_TYPE DESC ,OWNER ,OBJECT_NAME ,SUBOBJECT_NAME B1=[0.241601704e+017] --//可以发现toad下仅仅支持科学计数法的小数点后9位小数。这样相当于输入24160170400000000,自然查询没有结果。 --//遇到这种情况简单处理方法就是在toad下选择类型为字符类型就可以绕过这个限制,因为可以规避隐式转换问题。 --//我测试在toad下最大输入整形是9999999999999998,占16个字符。 --//如果输入9999999999999999,实际上输入1E16。 --//我看到开发很少使用toad,至少我们开发团队是这样,不知道PLSQL DEVELOP是否存在类似问题。 --//我工作偶尔会使用toad,提醒注意在toad下绑定变量是整形很大要注意这个细节问题。 --//具体最大整数是9999999999999998(占16个字符)。 --//验证脚本如下 SCOTT@book01p> create table tx (a number); Table created. SCOTT@book01p> insert into tx values (9999999999999998); 1 row created. SCOTT@book01p> insert into tx values (9999999999999999); 1 row created. SCOTT@book01p> commit; Commit complete. select * from scott.tx where a =:BB --//在toad下带入9999999999999998有输出,带入9999999999999999没有输出。
[20250722]使用toad的小问题.txt
来源:这里教程网
时间:2026-03-03 22:23:55
作者:
编辑推荐:
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- 服务器数据恢复—光纤存储硬盘故障导致业务中断的数据恢复案例
服务器数据恢复—光纤存储硬盘故障导致业务中断的数据恢复案例
26-03-03 - Python 语言连接并操作 KWDB 数据库
Python 语言连接并操作 KWDB 数据库
26-03-03 - 客户不配合影响项目进度,如何设定合理约束
客户不配合影响项目进度,如何设定合理约束
26-03-03 - 轻帆云AI Inside实践:GenAI 如何推动 ITSM 驶入产业深水区?
- Oracle 大页配置use_large_pages 参数解析
Oracle 大页配置use_large_pages 参数解析
26-03-03 - 金价疯涨,金饰退场:年轻人正在掀翻“黄金信仰”
金价疯涨,金饰退场:年轻人正在掀翻“黄金信仰”
26-03-03 - 从原理到实践:2025年企业级分布式管理系统及10+工具指南
从原理到实践:2025年企业级分布式管理系统及10+工具指南
26-03-03 - Oracle19C 19.28补丁发布,打补丁到19.28
Oracle19C 19.28补丁发布,打补丁到19.28
26-03-03 - Oracle 表空间不足?用 Shell 脚本实现自动扩容!
Oracle 表空间不足?用 Shell 脚本实现自动扩容!
26-03-03 - 通过ETL工具,高效完成达梦数据库数据同步至数仓Oracle的具体实现
通过ETL工具,高效完成达梦数据库数据同步至数仓Oracle的具体实现
26-03-03
