Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 使用VARCHAR2的经典ASP-PL/SQL数学运算_Oracle_Plsql_Asp Classic - Fatal编程技术网

Oracle 使用VARCHAR2的经典ASP-PL/SQL数学运算

Oracle 使用VARCHAR2的经典ASP-PL/SQL数学运算,oracle,plsql,asp-classic,Oracle,Plsql,Asp Classic,我会尽力解释的 我用varchar2列实现了视图 以下是代码示例: SELECT field1 * 1000 FROM my_mv WHERE id = 15 当我从蟾蜍身上执行这个命令时,它工作得很好(我只对ofc的数字执行)。但是当我尝试从ASP做同样的事情时 sql = "SELECT field1 * 1000 FROM my_mv WHERE id = 15" set rs = conntemp.Execute(sql) 我犯了一个错误 [Microsoft][ODBC驱动程序f

我会尽力解释的

我用varchar2列实现了视图

以下是代码示例:

SELECT field1 * 1000
FROM my_mv 
WHERE id = 15
当我从蟾蜍身上执行这个命令时,它工作得很好(我只对ofc的数字执行)。但是当我尝试从ASP做同样的事情时

sql = "SELECT field1 * 1000 FROM my_mv WHERE id = 15"
set rs = conntemp.Execute(sql)
我犯了一个错误

[Microsoft][ODBC驱动程序for Oracle][Oracle]ORA-01722:无效数字

试图对列上的编号执行
,但仍然相同

也许我不够清楚。这不是Oracle错误(Oracle可以毫无问题地执行此查询,因为列值可以转换为数字)。问题是,当从经典ASP调用时,会抛出错误

正如前面所说的,我也试着去做

SELECT to_number(field1) * 1000

但是我仍然得到了相同的结果,这将发生,因为Oracle试图隐式地将
field1
转换为整数,但是失败了,因为该列中有其他非数值


请参阅

发生这种情况的原因是Oracle试图将
field1
隐式转换为整数,但由于该列中包含其他非数值,因此失败


请参阅

Oracle的ODBC驱动程序
中可能重复的错误。错误。说这是一个典型的ASP错误是胡说八道,我保证使用提供程序和任何其他语言都会得到相同的结果。对不起,我不熟悉ASP(.NET?),但这在vb.NET中是可以复制的吗?这可能是一个过于简化的示例的产物,但你不能在VBScript中乘以1000吗,在您完成了确保结果始终为数字的筛选之后?可能重复的错误来自Oracle
ODBC驱动程序for Oracle
。错误。说这是一个典型的ASP错误是胡说八道,我保证使用提供程序和任何其他语言都会得到相同的结果。对不起,我不熟悉ASP(.NET?),但这在vb.NET中是可以复制的吗?这可能是一个过于简化的示例的产物,但你不能在VBScript中乘以1000吗,在您完成了确保结果始终为数字的筛选之后?不,情况并非如此。它是数值,当我从蟾蜍那里调用它时,oracle可以转换它。我只在从经典asp调用时出错,直接从toad works调用fine@BeRightBack该值可能是“numeric”(
VARCHAR2
value隐式转换为numeric),但表列的其余部分是否为数值?无论是否在TOAD中工作,尝试这样的隐式强制转换都会带来麻烦。您可能会发现,对于您来说,Oracle ODBC提供程序不是。是的,该字段中的所有值都是数字。是的,我知道这不是最好的方法,但这是我唯一的方法:)是的,我知道蟾蜍在做隐式铸造,我想问的是有没有办法让ODCB来做?感谢您在说之前给出的答案,不能更改视图,甚至不能创建新的字段编号而不是varcharNLS变量是我检查的第一件事,当从ASP中选择并显示在屏幕上时,它们看起来是正确的NLS数字字符-,但现在实际上尝试替换(field1,,,,,,,)*1000,错误消失了。谢谢,我不知道为什么我在检查nls变量时会得到错误的值,但这似乎是个问题。不,不是这样。它是数值,当我从蟾蜍那里调用它时,oracle可以转换它。我只在从经典asp调用时出错,直接从toad works调用fine@BeRightBack该值可能是“numeric”(
VARCHAR2
value隐式转换为numeric),但表列的其余部分是否为数值?无论是否在TOAD中工作,尝试这样的隐式强制转换都会带来麻烦。您可能会发现,对于您来说,Oracle ODBC提供程序不是。是的,该字段中的所有值都是数字。是的,我知道这不是最好的方法,但这是我唯一的方法:)是的,我知道蟾蜍在做隐式铸造,我想问的是有没有办法让ODCB来做?感谢您在说之前给出的答案,不能更改视图,甚至不能创建新的字段编号而不是varcharNLS变量是我检查的第一件事,当从ASP中选择并显示在屏幕上时,它们看起来是正确的NLS数字字符-,但现在实际上尝试替换(field1,,,,,,,)*1000,错误消失了。谢谢,我不知道为什么我在检查nls变量时会得到错误的值,但这似乎是个问题。