0

显示 all_tab_columns 中所有列少于 4 列的所有表,其中 owner ='GYS' 并以 'COL' 开头,而不使用 group by 函数。

尝试使用 count/max 函数时出现错误。任何想法,将不胜感激!

4

2 回答 2

1

此查询将为您提供数据库中列数少于 4 的所有表的名称

SELECT TABLE_NAME, COUNT(Column_Name) NumOfCols
FROM INFORMATION_SCHEMA.COLUMNS
GROUP BY TABLE_NAME
HAVING COUNT(Column_Name) < 4
于 2013-11-10T19:41:47.127 回答
0
declare
       cursor c1 
       is 
        select t.table_name, t.column_name, t.owner, 
       (select count('table_name.column_name') 
       from all_tab_columns ct where ct.table_name = t.table_name ) 
       as namecounter 
       from all_tab_columns t where t.owner ='GYS' and t.table_name like 'COL%';

       b1 c1%rowtype;
       tab_count number(10);
       temp_column varchar2(100);
begin
    open c1;
      loop
            fetch c1 into b1;

                  temp_column := b1.namecounter;
                  while temp_column <4 
                  loop
                  dbms_output.put_line(b1.table_name||b1.column_name||b1.namecounter);
                  tab_count:=c1%rowcount;
                  dbms_output.put_line(tab_count);
                  end loop;
       end loop;   
   close c1;
end;
/

我终于解决了上述问题,但是就执行速度而言,它的运行速度非常慢,任何提高性能的想法都将不胜感激!

于 2013-11-13T18:46:33.663 回答