作为脚本执行是否意味着我的所有字段都成为VARCHAR2的数据类型?

时间:2017-10-12 13:33:00

标签: sql oracle toad

我在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数据类型返回。

1 个答案:

答案 0 :(得分:2)

我相信这是因为 F5 作为脚本执行,因此结果从sqlplus收集为文本。

因此,解决方案是将结果复制/粘贴到文本文件中,并使用像Open-office Calc这样的csv-import工具,您可以将数据转换为数字并进行进一步计算。