使用 VARCHAR2 的经典 ASP - PL/SQL 数学运算
Classic ASP - PL/SQL mathematical operations with VARCHAR2
我会尽力解释这个。
我有 varchar2 列的物化视图。
这是代码示例:
SELECT field1 * 1000
FROM my_mv
WHERE id = 15
当我从 TOAD 执行此操作时,它工作得很好(我只对数字执行)。但是当我尝试从 ASP
做同样的事情时
sql = "SELECT field1 * 1000 FROM my_mv WHERE id = 15"
set rs = conntemp.Execute(sql)
我收到一个错误
[Microsoft][ODBC driver for Oracle][Oracle]ORA-01722: invalid number
尝试在列上执行 to_number
,但还是一样
可能是我说的不够清楚。这不是 Oracle 错误(Oracle 可以毫无问题地执行此查询,因为列值可以转换为数字)。问题是当从经典 ASP 调用它时,会抛出错误。
如前所述,我也尝试过
SELECT to_number(field1) * 1000
但我仍然得到相同的结果
之所以会发生这种情况,是因为 Oracle 试图将 field1
隐式转换为整数但失败了,因为该列中包含其他非数字值。
见@jason-quinones answer to Can I pass a number for varchar2 in Oracle?
我会尽力解释这个。
我有 varchar2 列的物化视图。
这是代码示例:
SELECT field1 * 1000
FROM my_mv
WHERE id = 15
当我从 TOAD 执行此操作时,它工作得很好(我只对数字执行)。但是当我尝试从 ASP
做同样的事情时sql = "SELECT field1 * 1000 FROM my_mv WHERE id = 15"
set rs = conntemp.Execute(sql)
我收到一个错误
[Microsoft][ODBC driver for Oracle][Oracle]ORA-01722: invalid number
尝试在列上执行 to_number
,但还是一样
可能是我说的不够清楚。这不是 Oracle 错误(Oracle 可以毫无问题地执行此查询,因为列值可以转换为数字)。问题是当从经典 ASP 调用它时,会抛出错误。
如前所述,我也尝试过
SELECT to_number(field1) * 1000
但我仍然得到相同的结果
之所以会发生这种情况,是因为 Oracle 试图将 field1
隐式转换为整数但失败了,因为该列中包含其他非数字值。
见@jason-quinones answer to Can I pass a number for varchar2 in Oracle?