我写了一个存储过程如下:
CREATE OR REPLACE
( fields VARCHAR2,
sumVal table.field1%TYPE)
IS
l_sumVal table.field1%TYPE := 0;
BEGIN
SELECT SUM(field1)
INTO l_field1
FROM table
WHERE key1 IN (fields);
sumVal := l_sumVal;
END;
我在执行的时候传入的参数格式为:'1000','1001','1002'
其中'1000','1001','1002'是存在表中的。
为什么会有 :
"ORA-01722: 无效数字" 这个异常产生.
如果我把WHERE key1 IN (fields);替换成WHERE key1 IN ('1000','1001','1002');
就可以执行得到结果,请指点.....................
CREATE OR REPLACE
( fields VARCHAR2,
sumVal table.field1%TYPE)
IS
l_sumVal table.field1%TYPE := 0;
BEGIN
SELECT SUM(field1)
INTO l_field1
FROM table
WHERE key1 IN (fields);
sumVal := l_sumVal;
END;
我在执行的时候传入的参数格式为:'1000','1001','1002'
其中'1000','1001','1002'是存在表中的。
为什么会有 :
"ORA-01722: 无效数字" 这个异常产生.
如果我把WHERE key1 IN (fields);替换成WHERE key1 IN ('1000','1001','1002');
就可以执行得到结果,请指点.....................
解决方案 »
- 【Help】Oracle OCCI编程中,如何根据错误码来判断是连接出现问题,还是sql语句错误?
- 根据oracle进程PID查询sql语句的问题
- oracle问题解决一例 -- 使用uli工具释放存储空间
- 动态创建表和索引
- 别人说:触发器出错了不好控制.是这样吗?欢迎大家讨论.
- 求助:SQL Server 2000 数据库移植到Oracle
- 在oracle 8.17的视图中想使用自定义的函数怎么办
- 急急急!Oracle7.3升级到Oracle8.X的问题
- 如何获得一列中的最大字符串??
- 怎么执行这样的sql,是在sql/plus里面吗?我怎么不能执行
- 数据库连接问题TNS lost contact
- 表查询很慢问题?
( fields VARCHAR2,
sumVal table.field1%TYPE)
IS
l_sumVal table.field1%TYPE := 0;
BEGIN
EXECUTE IMMEDIATE 'SELECT SUM('||field1||')
FROM table
WHERE key1 IN ('||fields||')' INTO l_field1;
sumVal := l_sumVal;
END;