roy*_*att 1 sql oracle plsql cursor
对于 X 中的所有表,而 X 是
select table_name from all_tab_cols
where column_name = 'MY_COLUMN'
and owner='ADMIN'
Run Code Online (Sandbox Code Playgroud)
我需要检查列 MY_COLUMN 是否具有“Y”或“N”以外的其他值,如果有,则打印出表名称。
伪代码:
for table in X:
if MY_COLUMN !='Y' or MY_COLUMN !='N':
print table
Run Code Online (Sandbox Code Playgroud)
我想如何在 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;
Run Code Online (Sandbox Code Playgroud)
基本上,我们打开一个游标,其中包含包含该列的所有表,对具有与 Y 或 N 不同的值的行进行计数,如果该计数 > 0,则打印该表。
| 归档时间: |
|
| 查看次数: |
9826 次 |
| 最近记录: |