【发布时间】:2014-04-10 04:58:07
【问题描述】:
我在 IN 运算符中将 100 个表名作为字符串传递,但由于操作数过多,我收到了数字溢出错误。 除了 IN 之外,还有什么方法可以让我使用其他东西吗?
set serveroutput on
DECLARE
...
BEGIN
FOR r IN
(
SELECT table_name, column_name
FROM all_tab_columns
WHERE table_name IN (...100 strings)
)
AND data_type = 'NUMBER'
ORDER BY table_name, column_id
)
LOOP
execute immediate 'SELECT COUNT("' || r.column_name || '")
,COUNT(nvl2("' || r.column_name || '", NULL, 1))
FROM "' || r.table_name || '"'
INTO not_null_count, null_count;
DBMS_OUTPUT.PUT_LINE(..)
注意:对于变量,我使用的是 PLS_Integer。
【问题讨论】:
-
作为the documentation says,我们在
IN子句中最多可以有1000 个值。所以这不是你的问题。 -
您收到的实际错误消息是什么?您如何将 100 个字符串传递给查询?
-
是的,但这并不能解决我的问题
-
所以回答我的其他问题。
-
什么错误号? ORA-01426?
标签: oracle plsql in-operator