- createorreplacepackageSqlexp_packis
- --Author:YANLEI
- --Created:2008-12-2511:25:09
- --Purpose:oracle导出
- --sql导出文本字符串
- functionSqlToText(sqlstrinvarchar2)returnlong;
- --sql导出文件
- functionSqlTofile(sqlstrinvarchar2,filenameinvarchar2)
- returnvarchar2;
- endSqlexp_pack;
- /
- createorreplacepackagebodySqlexp_packis
- --sql导出文本字符串
- functionSqlToText(sqlstrinvarchar2)returnlongis
- colnamevarchar2(4000);
- rownuminteger;
- colnumnumberdefault0;--字段个数
- linestrvarchar2(20000);
- ylTbldbms_sql.desc_tab;--表信息
- ylCursorintegerdefaultdbms_sql.open_cursor;--sql输出的游标
- rstrlong;
- begin
- dbms_sql.parse(ylCursor,sqlstr,dbms_sql.native);--解析动态SQL语句;
- dbms_sql.describe_columns(ylCursor,colnum,yltbl);--获得动态sql的元数据
- foriin1..colnumloop
- dbms_sql.define_column(ylCursor,i,colname,4000);--定义动态sql的列
- endloop;
- rownum:=dbms_sql.execute(ylCursor);--执行动态SQL语句。返回值,对于非查询的语句,execute将执行该语句并返回处理了的行的个数。对于查询,execute将确定活动集返回,返回值为0
- ifrownum<>0then
- return'';
- endif;
- rstr:='';
- while(dbms_sql.fetch_rows(ylCursor)>0)loop
- linestr:='';
- foriin1..colnumloop
- dbms_sql.column_value(ylCursor,i,colname);--获得字段值
- linestr:=linestr||colname;
- ifi<colnumthen
- linestr:=linestr||',';
- endif;
- endloop;
- rstr:=rstr||linestr||chr(10);
- endloop;
- dbms_sql.close_cursor(ylCursor);
- returnrstr;
- exception
- whenothersthen
- dbms_sql.close_cursor(ylCursor);
- raise;
- endSqlToText;
- --sql导出文件
- functionSqlTofile(sqlstrinvarchar2,filenameinvarchar2)
- returnvarchar2is
- strlong;
- begin
- str:=SqlToText(sqlstr);
- YLFileop_pack.writefile(filename,str);
- return'成功';
- end;
- endSqlexp_pack;
- /
- ---转载保留版权 by yanleigis email:landgis@126.com
oracle 存储过程,导出sql到文本,动态sql,dbms_sql使用
最新推荐文章于 2025-05-30 09:44:44 发布