Tôi tin rằng bạn muốn
execute immediate 'SELECT count(*) FROM PreparedDocumentFeaturesValues WHERE '|| columnItem.column_name||' IS NULL' into null_row_count;
Đây là câu trả lời đầy đủ hơn sẽ hiệu quả hơn những gì bạn có ở trên.
DVLP SQL>create table foo as select * from dba_objects where rownum < 10;
Table created.
DVLP SQL>update foo set status = null;
9 rows updated.
DVLP SQL>
DVLP SQL>declare
2 tab_name constant varchar2(32) := 'foo';
3 not_null number;
4 begin
5 for x in (select column_name from all_tab_columns where table_name = upper(tab_name)) loop
6 dbms_output.put('Checking '||tab_name||'.'||x.column_name);
7 begin
8 execute immediate 'select 1 from (select 1 from '||tab_name||
9 ' where '||x.column_name||' is not null) where rownum = 1' into not_null;
10 dbms_output.put_line('.');
11 exception when NO_DATA_FOUND then
12 dbms_output.put_line('...all null.');
13 end;
14 end loop;
15 end;
16 /
Checking foo.OWNER.
Checking foo.OBJECT_NAME.
Checking foo.SUBOBJECT_NAME...all null.
Checking foo.OBJECT_ID.
Checking foo.DATA_OBJECT_ID.
Checking foo.OBJECT_TYPE.
Checking foo.CREATED.
Checking foo.LAST_DDL_TIME.
Checking foo.TIMESTAMP.
Checking foo.STATUS...all null.
Checking foo.TEMPORARY.
Checking foo.GENERATED.
Checking foo.SECONDARY.
Checking foo.NAMESPACE.
Checking foo.EDITION_NAME...all null.