Purvesh K wrote:

Can you provide some sample data for explaining this? And it would be of great help if you can provide a working demo of your situation.How about not using SQL*Plus to do the job, but do it from within PL/SQL?

One of my standard examples for writing data to a file in CSV format...

As sys user:

CREATE OR REPLACE DIRECTORY TEST_DIR AS '\tmp\myfiles'

/

GRANT READ, WRITE ON DIRECTORY TEST_DIR TO myuser

/As myuser:

CREATE OR REPLACE PROCEDURE run_query(p_sql IN VARCHAR2

,p_dir IN VARCHAR2

,p_header_file IN VARCHAR2

,p_data_file IN VARCHAR2 := NULL) IS

v_finaltxt VARCHAR2(4000);

v_v_val VARCHAR2(4000);

v_n_val NUMBER;

v_d_val DATE;

v_ret NUMBER;

c NUMBER;

d NUMBER;

col_cnt INTEGER;

f BOOLEAN;

rec_tab DBMS_SQL.DESC_TAB;

col_num NUMBER;

v_fh UTL_FILE.FILE_TYPE;

v_samefile BOOLEAN := (NVL(p_data_file,p_header_file) = p_header_file);

BEGIN

c := DBMS_SQL.OPEN_CURSOR;

DBMS_SQL.PARSE(c, p_sql, DBMS_SQL.NATIVE);

d := DBMS_SQL.EXECUTE(c);

DBMS_SQL.DESCRIBE_COLUMNS(c, col_cnt, rec_tab);

FOR j in 1..col_cnt

LOOP

CASE rec_tab(j).col_type

WHEN 1 THEN DBMS_SQL.DEFINE_COLUMN(c,j,v_v_val,2000);

WHEN 2 THEN DBMS_SQL.DEFINE_COLUMN(c,j,v_n_val);

WHEN 12 THEN DBMS_SQL.DEFINE_COLUMN(c,j,v_d_val);

ELSE

DBMS_SQL.DEFINE_COLUMN(c,j,v_v_val,2000);

END CASE;

END LOOP;

-- This part outputs the HEADER

v_fh := UTL_FILE.FOPEN(upper(p_dir),p_header_file,'w',32767);

FOR j in 1..col_cnt

LOOP

v_finaltxt := ltrim(v_finaltxt||','||lower(rec_tab(j).col_name),',');

END LOOP;

-- DBMS_OUTPUT.PUT_LINE(v_finaltxt);

UTL_FILE.PUT_LINE(v_fh, v_finaltxt);

IF NOT v_samefile THEN

UTL_FILE.FCLOSE(v_fh);

END IF;

--

-- This part outputs the DATA

IF NOT v_samefile THEN

v_fh := UTL_FILE.FOPEN(upper(p_dir),p_data_file,'w',32767);

END IF;

LOOP

v_ret := DBMS_SQL.FETCH_ROWS(c);

EXIT WHEN v_ret = 0;

v_finaltxt := NULL;

FOR j in 1..col_cnt

LOOP

CASE rec_tab(j).col_type

WHEN 1 THEN DBMS_SQL.COLUMN_VALUE(c,j,v_v_val);

v_finaltxt := ltrim(v_finaltxt||',"'||v_v_val||'"',',');

WHEN 2 THEN DBMS_SQL.COLUMN_VALUE(c,j,v_n_val);

v_finaltxt := ltrim(v_finaltxt||','||v_n_val,',');

WHEN 12 THEN DBMS_SQL.COLUMN_VALUE(c,j,v_d_val);

v_finaltxt := ltrim(v_finaltxt||','||to_char(v_d_val,'DD/MM/YYYY HH24:MI:SS'),',');

ELSE

v_finaltxt := ltrim(v_finaltxt||',"'||v_v_val||'"',',');

END CASE;

END LOOP;

-- DBMS_OUTPUT.PUT_LINE(v_finaltxt);

UTL_FILE.PUT_LINE(v_fh, v_finaltxt);

END LOOP;

UTL_FILE.FCLOSE(v_fh);

DBMS_SQL.CLOSE_CURSOR(c);

END;This allows for the header row and the data to be written to seperate files if required.

e.g.

SQL> exec run_query('select * from emp','TEST_DIR','output.txt');

PL/SQL procedure successfully completed.Output.txt file contains:

empno,ename,job,mgr,hiredate,sal,comm,deptno

7369,"SMITH","CLERK",7902,17/12/1980 00:00:00,800,,20

7499,"ALLEN","SALESMAN",7698,20/02/1981 00:00:00,1600,300,30

7521,"WARD","SALESMAN",7698,22/02/1981 00:00:00,1250,500,30

7566,"JONES","MANAGER",7839,02/04/1981 00:00:00,2975,,20

7654,"MARTIN","SALESMAN",7698,28/09/1981 00:00:00,1250,1400,30

7698,"BLAKE","MANAGER",7839,01/05/1981 00:00:00,2850,,30

7782,"CLARK","MANAGER",7839,09/06/1981 00:00:00,2450,,10

7788,"SCOTT","ANALYST",7566,19/04/1987 00:00:00,3000,,20

7839,"KING","PRESIDENT",,17/11/1981 00:00:00,5000,,10

7844,"TURNER","SALESMAN",7698,08/09/1981 00:00:00,1500,0,30

7876,"ADAMS","CLERK",7788,23/05/1987 00:00:00,1100,,20

7900,"JAMES","CLERK",7698,03/12/1981 00:00:00,950,,30

7902,"FORD","ANALYST",7566,03/12/1981 00:00:00,3000,,20

7934,"MILLER","CLERK",7782,23/01/1982 00:00:00,1300,,10The procedure allows for the header and data to go to seperate files if required. Just specifying the "header" filename will put the header and data in the one file.

Adapt to output different datatypes and styles are required.

oracle单行超2499,SP2-0027: Input is too long ( 2499 characters) - line ignored — oracle-tech相关推荐

  1. 李兴华oracle ppt,魔乐科技Oracle笔记超经典李兴华doc.ppt

    魔乐科技Oracle笔记超经典李兴华doc 连接符 || 图表 1 多表查询的基本语法 查一张以上的表,就叫做多表查询 例子:查询出雇员名称,部门名称和部门所在地的(一般多表查询要用别名) 统计记录数 ...

  2. 安装64位Oracle 10g超详细教程

    安装64位Oracle 10g超详细教程 1. 安装准备阶段 1.1 安装Oracle环境 经过上一篇博文的过程,已经完成了对Linux系统的安装,本例使用X-Manager来实现与Linux系统的连 ...

  3. Oracle 单行函数

    学习Oracle 单行函数: 包括字符函数,数值函数,日期函数,转换函数,通用函数. dual是一个"伪表",可以用来测试函数和表达式. 1, 字符函数 包括大小写控制函数,字符控 ...

  4. Oracle单实例通过DG迁移至RAC集群(Oracle 11g 超详细文档)

    实验:Oracle单实例通过DG迁移至RAC集群(Oracle 11g 超详细文档) 步骤1:Oracle单实例搭建 1. 系统环境检查 2. 创建用户.组,配置环境变量.安装目录 3. 安装Orac ...

  5. Oracle数据库:条件表达式case when then else end,decode函数,oracle单行函数练习示例

    Oracle数据库:条件表达式case when then else end,decode函数,oracle单行函数练习示例 2022找工作是学历.能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很 ...

  6. Oracle 免费的数据库--Database 快捷版 11g 安装使用与SOD框架对Oracle的CodeFirst支持...

    一.Oracle XE 数据库与连接工具安装使用 Oracle数据库历来以价格昂贵出名,当然贵有贵的道理,成为一个Oracle DBA也是令人羡慕的事情,如果程序员熟悉Oracle使用也有机会接触到大 ...

  7. 《oracle大型数据库系统在AIX/unix上的实战详解》讨论31: oracle、sybase 数据库的不同访问...

    <Oracle大型数据库系统在AIX/UNIX上的实战详解> 讨论31:  oracle.sybase 数据库的不同访问方式   文平. 用户来信要求更细节比较一下Oracle和sybas ...

  8. Oracle 11gR2学习之三(创建用户及表空间、修改字符集和Oracle开机启动)

    一.创建用户及表空间 1.连接数据库 [root@localhost ~]# su - oracle [oracle@localhost ~]$ sqlplus /nolog   #进入sqlplus ...

  9. oracle和mysql登录方式_使用普通方式和连接池方式获取Oracle和Mysql链接

    数据库连接方式 package com.niit.gb.comm; import java.sql.Connection; import java.sql.DriverManager; public ...

最新文章

  1. 【项目实战】---使用ajax完毕username是否存在异步校验
  2. php mysql log文件怎么打开_如何查看mysql的日志文件
  3. python爬虫,爬取猫眼电影1(正则表达式)
  4. 三十三、数据仓库的概述
  5. kubeadm join时出现错误:[ERROR Port-10250]: Port 10250 is in use [ERROR FileAvailable--etc-kubernetes-pki
  6. tyvj 1391 走廊泼水节【最小生成树】By cellur925
  7. fatal error: GL/glew.h: 没有那个文件或目录
  8. java android 数组_Android开发基础之Java 数组
  9. 顶会 | 腾讯AI Lab 9篇入选论文解读
  10. html中span不显示背景
  11. cin.get(),cin.getline(),getline(),gets(),getchar()
  12. 大数据如何影响企业的决策
  13. 信号检测与判决的五大准则
  14. 人工智能可以产生自主意识吗?
  15. vue模板中写html,vue中template的三种写法示例
  16. fpga控制vga显示彩色图片
  17. SDR HDR 区别
  18. 菜菜的刷题日记 | 66.加一 Plus One
  19. linux桌面系统 5种经典的Linux桌面系统
  20. python控制已经打开的浏览器_使用python+selenium控制手工已打开的浏览器

热门文章

  1. 【论文阅读】Clustering by Shift
  2. imutils用法总结
  3. oracle游标错误,ORACLE游标与错误处理
  4. Java基础点——面向对象(中)
  5. 申请服务器就是申请虚拟主机吗,申请一个虚拟主机和云主机哪个更好呢?
  6. psycopg2 mysql_使用psycopg2操作PostgreSQL数据库之二
  7. 同步阻塞处理的几种方法
  8. 在Access和 SQL Server中通配符的应用方法
  9. UA OPTI501 电磁波 Lorentz Oscillator Model 4 Hilbet变换与Kramers-Konig关系式
  10. UA MATH563 概率论的数学基础 中心极限定理17 0-1律的应用