应用场合:参考网上查询数据表的所有字段名代码,使用游标生成指定单个表的所有字段名跟逗号组成的用于select 逗号隔开的字段名列表 from字符串等场合。
查询结果输出如下:
当前数据表TB_UD_USER的字段列表字符串为
详细脚本代码如下:
Oracle使用游标查询指定数据表的所有字段名称组合而成的字符串
declare
cursor mycursor is --定义游标
select distinct TABLE_COLUMN.*,TABLE_NALLABLE.DATA_TYPE,TABLE_NALLABLE.NULLABLE from (select distinct utc.table_name table_name, utc.comments table_comments, ucc.column_name column_name, ucc.comments column_comments from user_tab_comments utc, user_col_comments ucc where utc.table_name = ucc.table_name and utc.table_name not like '%_B' and utc.table_name not like '%_Z' and utc.table_name not like '%1%') TABLE_COLUMN, (select distinct table_name, column_name, nullable, DATA_TYPE from user_tab_cols where table_name not like '%_B' and table_name not like '%_Z' and table_name not like '%1%') TABLE_NALLABLE where TABLE_COLUMN.column_name = TABLE_NALLABLE.column_name and TABLE_COLUMN.TABLE_NAME = TABLE_NALLABLE.table_name and TABLE_COLUMN.TABLE_NAME=mytablename order by TABLE_COLUMN.TABLE_NAME,TABLE_COLUMN.column_name;
if mycursor%found then --游标的found属性判断是否有记录
end;
else
begin
selstring:='select '||mystring||' from '||mytablename;
dbms_output.put_line('当前数据表'||mytablename||'查询所有记录语句为');
exit;
end;
end if;
close mycursor;
end;