首页 / 数据库 / MySQL / Oracle使用游标查询指定数据表的所有字段名称组合而成的字符串
应用场合:参考网上查询数据表的所有字段名代码,使用游标生成指定单个表的所有字段名跟逗号组成的用于select 逗号隔开的字段名列表 from字符串等场合。查询结果输出如下:当前数据表TB_UD_USER的字段列表字符串为 AH,BIRTHPLACE,BM,CELLPHONE,CJGZRQ,DEPARTMENT2,DJJID,GZCX,GZKH,GZSFZH,HJDZ,HYZK,ID,JHRQ,JTZZ,LAFX_LD,LJDZ,LLY,LXDH,NAME,NXDH,POLICENUMBER,RESERVE1,RESERVE10,RESERVE9,SCCP,SEX,SFJH,SFQBY,SFZ,SPJB,YL_22,ZJ,ZW,ZZMM 当前数据表TB_UD_USER查询所有记录语句为 select AH,BIRTHPLACE,BM,CELLPHONE,CJGZRQ,DEPARTMENT2,DJJID,GZCX,GZKH,GZSFZH,HJDZ,HYZK,ID,JHRQ,JTZZ,LAFX_LD,LJDZ,LLY,LXDH,NAME,NXDH,POLICENUMBER,RESERVE1,RESERVE10,RESERVE9,SCCP,SEX,SFJH,SFQBY,SFZ,SPJB,YL_22,ZJ,ZW,ZZMM from TB_UD_USER详细脚本代码如下:--Oracle使用游标查询指定数据表的所有字段名称组合而成的字符串declare mytablename NVARCHAR2(200):="TB_UD_USER"; --定义要查询的数据表名称变量 mystring NVARCHAR2(1000):=" "; --定义要输出的字段名称列表字符串变量 selstring VARCHAR2(2000):=" "; --定义要输出的查询语句字符串变量 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;myrecord mycursor%rowtype; --定义游标记录类型 Counter int :=0; begin open mycursor; --打开游标 if mycursor%isopen then --判断打开成功 loop --循环获取记录集 fetch mycursor into myrecord; --获取游标中的记录 if mycursor%found then --游标的found属性判断是否有记录 begin --如果是第一个字段 if(mystring=" ") then mystring:=myrecord.column_name; else mystring:=mystring||","||myrecord.column_name; end if;end;else begin
dbms_output.put_line("当前数据表"||mytablename||"的字段列表字符串为"); dbms_output.put_line(mystring);selstring:="select "||mystring||" from "||mytablename;dbms_output.put_line("当前数据表"||mytablename||"查询所有记录语句为"); dbms_output.put_line(selstring);exit;end;end if;
end loop; else dbms_output.put_line("游标没有打开"); end if; close mycursor;end;更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12本文永久更新链接地址