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



我正在Toad for Oracle中运行一个脚本。我有两个主要选项来运行脚本:

热键F9:执行语句
热键F5:作为脚本执行

"执行语句"将返回我的字段和我期望的数据类型(例如NUMBER字段输出为NUMBER域)。

但是"作为脚本执行"返回的是VARCHAR2数据类型的所有字段。即使是肯定是NUMBER数据类型的字段最终也会变成VARCHAR2。我可以用F9和F5运行相同的脚本,并看到它返回不同的数据类型。

因此,我的第一个问题是,这是否符合预期。而且,如果这是有意的,那么我的第二个问题是,在使用"作为脚本执行"时,如何避免所有数据类型都是VARCHAR2。我需要使用"作为脚本执行",因为我使用的是绑定变量。

编辑:例如,如果我有一张这样的表:

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

然后,当我"作为脚本执行"one_answers"执行语句"时,employee字段都返回为VARCHAR2。但是,sum(paid_amt)在"作为脚本执行"时返回VARCHAR2,在"执行语句"时返回NUMBER。我本来希望sum(paid_amt)总是返回NUMBER数据类型。

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

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

最新更新