【发布时间】:2012-11-20 21:56:29
【问题描述】:
我正在尝试在 SQL Developer 中执行以下 PL/SQL 脚本。循环应该返回空值计数,但每次它返回 0。 设置服务器输出
DECLARE
--v_count number;
v_count_null number;
BEGIN
execute immediate 'select count(*) from SP_MOSAIX' into v_count;
FOR i in (select column_name from all_tab_COLUMNS where table_name = 'SP_MOSAIX')
LOOP
select count(*) into v_count_null from SP_MOSAIX where i.column_name IS NULL ;
dbms_output.put_line(v_count_null);
END LOOP;
END;
所以当我运行它时,我得到以下输出:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
但如果我手动执行替换 column_name 的查询,我会得到结果。
select count(*) into v_count_null from SP_MOSAIX where i.column_name IS NULL;
有人可以帮忙吗?
【问题讨论】:
-
它返回 0 因为 i.column_name 被视为变量而不是列。现在的问题是我怎样才能使它成为实际的列值而不是变量
-
在第二个 select 语句中,表 SP_MOSAIX 没有别名“i”。请参阅 SQL 别名:w3schools.com/sql/sql_alias.asp
标签: sql oracle oracle10g oracle11g