Oracle - 遍历表并检查属性中的值
Oracle - iterate over tables and check for values in attribute
对于 X 中的所有 table,而 X 是
select table_name from all_tab_cols
where column_name = 'MY_COLUMN'
and owner='ADMIN'
我需要检查 MY_COLUMN 列是否具有 'Y' 或 'N' 以外的值,如果有,则打印出 table 名称。
伪代码:
for table in X:
if MY_COLUMN !='Y' or MY_COLUMN !='N':
print table
如何在 PL/SQL 中使用游标实现它?
以下应该有效:
DECLARE
counter NUMBER;
cursor c1 is
select table_name from all_tab_cols
where column_name = 'MY_COLUMN'
and owner='ADMIN';
BEGIN
FOR rec IN c1 LOOP
DBMS_OUTPUT.PUT_LINE(rec.table_name);
EXECUTE IMMEDIATE 'select count(*) into :counter from '|| rec.table_name ||' where MY_COLUMN!= ''Y'' and MY_COLUMN!= ''N'' ';
if counter > 0 then
DBMS_OUTPUT.PUT_LINE(rec.table_name);
end if;
END LOOP;
END;
基本上我们打开一个游标,其中所有 table 都包含该列,对值不同于 Y 或 N 的行进行计数,如果该计数 > 0,则打印 table .
Wouter 版本不适合我。
必须删除分号(Oracle 数据库版本 11.2.0.4.0)
DECLARE
counter NUMBER;
BEGIN
select count(*) into counter from LASTID;
dbms_output.put_line(counter);
END;
/
对于 X 中的所有 table,而 X 是
select table_name from all_tab_cols
where column_name = 'MY_COLUMN'
and owner='ADMIN'
我需要检查 MY_COLUMN 列是否具有 'Y' 或 'N' 以外的值,如果有,则打印出 table 名称。
伪代码:
for table in X:
if MY_COLUMN !='Y' or MY_COLUMN !='N':
print table
如何在 PL/SQL 中使用游标实现它?
以下应该有效:
DECLARE
counter NUMBER;
cursor c1 is
select table_name from all_tab_cols
where column_name = 'MY_COLUMN'
and owner='ADMIN';
BEGIN
FOR rec IN c1 LOOP
DBMS_OUTPUT.PUT_LINE(rec.table_name);
EXECUTE IMMEDIATE 'select count(*) into :counter from '|| rec.table_name ||' where MY_COLUMN!= ''Y'' and MY_COLUMN!= ''N'' ';
if counter > 0 then
DBMS_OUTPUT.PUT_LINE(rec.table_name);
end if;
END LOOP;
END;
基本上我们打开一个游标,其中所有 table 都包含该列,对值不同于 Y 或 N 的行进行计数,如果该计数 > 0,则打印 table .
Wouter 版本不适合我。 必须删除分号(Oracle 数据库版本 11.2.0.4.0)
DECLARE
counter NUMBER;
BEGIN
select count(*) into counter from LASTID;
dbms_output.put_line(counter);
END;
/