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

Does executing as a script mean all my fields become data type of VARCHAR2?

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

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

"Execute Statement" 将 return 我的字段具有我期望的数据类型(例如 NUMBER 字段输出为 NUMBER 字段)。

但是 "Execute as Script" return 使用 VARCHAR2 数据类型对我的所有字段进行处理。即使是绝对是 NUMBER 数据类型的字段最终也会成为 VARCHAR2。我可以从字面上 运行 使用 F9 然后 F5 的相同脚本,并看到它 returns 不同的数据类型。

所以我的第一个问题是这是否按预期运行。而且,如果它是有意的,那么我的第二个问题是如何避免在使用 "Execute as Script" 时将所有数据类型都设置为 VARCHAR2。我需要使用 "Execute as Script" 因为我正在使用绑定变量。

编辑:例如,如果我有这样的 table:

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

那么当我 "Execute as Script" 和 "Execute Statement" 时,员工字段 return 都是 VARCHAR2。但是,当我 "Execute as Script" 时,sum(paid_amt) returns 是 VARCHAR2,当我 "Execute Statement" 时是 NUMBER。我会一直期望 sum(paid_amt) 到 return 与 NUMBER 数据类型。

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

所以一个解决方案是copy/paste将您的结果保存到文本文件中,并使用像 Open-office Calc 这样的 csv 导入工具,您可以在其中将数据转换为数字并进行进一步计算。