我在Toad for Oracle中运行脚本。我有两个主要选项来运行脚本:
Hotkey F9 :执行声明
Hotkey F5 :以脚本执行
“执行语句”将返回我的字段,其中包含我期望的数据类型(例如,NUMBER字段输出为NUMBER字段)。
但是“以脚本执行”是使用VARCHAR2数据类型返回所有字段。即使是明确为NUMBER数据类型的字段也最终为VARCHAR2。我可以用F9和F5运行相同的脚本,看看它返回不同的数据类型。
所以我的第一个问题是这是否符合预期。并且,如果它是预期的,那么我的第二个问题是如何在使用“Execute as Script”时避免让我的所有数据类型都为VARCHAR2。我需要使用“Execute as Script”,因为我正在使用绑定变量。
编辑:例如,如果我有一个这样的表:
TBL_PAID_DATA
╔══════════╦══════════╗
║ employee ║ paid_amt ║
╠══════════╬══════════╣
║ Sam ║ 1500 ║
║ Sam ║ 200 ║
║ Sam ║ 150 ║
║ Lisa ║ 500 ║
║ Lisa ║ 430 ║
║ Bart ║ 700 ║
║ Donald ║ 840 ║
╚══════════╩══════════╝
有一个这样的剧本:
SELECT employee, sum(paid_amt)
FROM TBL_PAID_DATA
GROUP BY employee
然后当我“执行脚本”和“执行语句”时,employee字段返回为VARCHAR2。但是,当我“执行为脚本”时,sum(paid_amt)返回为VARCHAR2,而当我执行“执行语句”时,sum(paid_amt)返回NUMBER。我希望sum(paid_amt)始终以NUMBER数据类型返回。
答案 0 :(得分:2)
我相信这是因为 F5 作为脚本执行,因此结果从sqlplus
收集为文本。
因此,解决方案是将结果复制/粘贴到文本文件中,并使用像Open-office Calc这样的csv-import工具,您可以将数据转换为数字并进行进一步计算。