Oracle - 使用存储过程创建文本文件

2024-02-04

需要有关在 Oracle 10 中使用存储过程创建文本文件的帮助。我对此很陌生,所以请从头开始指导我。

我找到了代码并将其创建为存储过程。我运行它并且它是有效的。但我执行了它,我得到了错误"INVALID FILE NAME... AT SYS.UTL_FILE..."

我首先创建了一个授予目录读取、写入权限的目录。

CREATE OR REPLACE PROCEDURE refcursorkim IS
   l_file      utl_file.file_type;
   l_file_name VARCHAR2(60);
BEGIN
l_file := utl_file.fopen('UTL_DIR', l_file_name, 'w');          
   SELECT 'KY' || TO_CHAR(SYSDATE, 'yyyymmdd') || '1.txt' INTO l_file_name  FROM dual;
   utl_file.putf(l_file,l_file_name);
   utl_file.fclose(l_file);
END refcursorkim;

我不知道我错过了什么,因为我对此根本不熟悉。另一件事是,文件是否会自动在指定的目录中创建?

希望你能帮助我。谢谢你,愿上帝保佑!


您应该使用正确的文件名打开该文件。

你的代码(会出错):

CREATE OR REPLACE PROCEDURE refcursorkim
IS
   l_file        UTL_FILE.file_type;
   l_file_name   VARCHAR2 (60);
BEGIN
   l_file := UTL_FILE.fopen ('UTL_DIR', l_file_name, 'w');

   SELECT 'KY' || TO_CHAR (SYSDATE, 'yyyymmdd') || '1.txt'
     INTO l_file_name
     FROM DUAL;

   UTL_FILE.putf (l_file, l_file_name);
   UTL_FILE.fclose (l_file);
END refcursorkim;

应该是(更正):

CREATE OR REPLACE PROCEDURE refcursorkim
IS
   l_file        UTL_FILE.file_type;
   l_file_name   VARCHAR2 (60);
BEGIN

   SELECT 'KY' || TO_CHAR (SYSDATE, 'yyyymmdd') || '1.txt'
     INTO l_file_name
     FROM DUAL;

   l_file := UTL_FILE.fopen ('UTL_DIR', l_file_name, 'w');

   UTL_FILE.putf (l_file, l_file_name);
   UTL_FILE.fclose (l_file);
END refcursorkim;

更多这里:http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/u_file.htm#i1004619 http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/u_file.htm#i1004619

Edit 1:

  1. 如果该文件不存在,将创建一个新文件。如果存在,它将替换为新文件。如果您需要保留文件,请使用以下命令打开'A'追加模式。
  2. UTL_FILE 中没有用于浏览目录内容的选项。然而,Oracle 11g 中还有其他选项。您使用的是哪个版本的 Oracle? (我还会给你一个内部秘密,帮助你快速学习Oracle标准库函数。打开UTL_FILE包规范。他们提供了很好的文档,对过程调用中所做的事情提供了足够的注释)

你得到的错误是什么?您可以粘贴您正在使用的代码以及您得到的结果吗?完整的运行细节?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Oracle - 使用存储过程创建文本文件 的相关文章

  • PL/SQL:如何声明会话变量?

    如何在 PL SQL 中声明一个会话变量 该变量仅在会话期间持续存在 而无需将其存储在数据库本身中 您可以使用 用户创建的上下文 来存储会话中多个单元共享的数据 首先 创建一个上下文 CREATE CONTEXT SYS CONTEXT u
  • 在 JDBC PL/SQL 块中多次使用命名参数时出错

    当使用命名参数调用 PL SQL 块时出现错误 当所有命名参数仅使用一次时 我的代码工作正常 但是当我复制标有 SQL 的 SQL 时 然后所有命名参数 以冒号开头 q 都使用了两次 现在我得到一个 SQL 异常 它说 参数名称的数量与注册
  • 创建每 5 分钟刷新一次的物化视图

    我创建了一个每 5 分钟刷新一次的物化视图 但是当我在物化视图上插入并执行选择时 我会得到相同的旧数据吗 需要手动刷新吗 CREATE MATERIALIZED VIEW MVW TEST REFRESH FORCE ON DEMAND S
  • SQL状态[99999];错误代码[17004];无效的列类型:1111 使用 Spring SimpleJdbcCall

    大家好 我正在使用 spring 简单的 JDBC 模板来调用 oracle 过程 下面是我的代码 步骤 create or replace PROCEDURE get all system users pi client code IN
  • 相当于 Oracle 的 SQL*Plus 中 MySQL 的 \G

    在 Oracle 的 SQL Plus 中 SELECT 的结果以表格方式显示 有没有办法以键值方式显示一行 例如MySQL的 G option http slaptijack com software enabling vertical
  • 具有多个数据源的 Tomcat 6/7 JNDI

    当有多个时
  • 通过一个表中的列更新另一表中的列

    我有两张桌子 A 和 B 两者都有一个共同的列 name 并通过列 id 相互链接 表A中的 name 列是空的 而表B中有数据 我的任务是用相应的id填充从表B到表A的该列中的所有数据 我正在使用以下查询 UPDATE A SET A n
  • 在 Oracle 临时表上放置索引安全吗?

    我读过 不应分析临时表 因为它会破坏其他表的统计信息 指数怎么样 如果我在程序运行期间在表上放置索引 使用该表的其他程序会受到该索引的影响吗 索引是否会影响我的进程以及使用该表的所有其他进程 或者它会单独影响我的过程吗 所有的回复都不是权威
  • SQL:两个没有完整列匹配的表的并集

    我有一个table A其中有一组列A1 A2和一个具有一组列的 table bB1 B2 碰巧的是A2 B1但其余列不匹配 也不应该匹配 我想附加表格 所以我使用UNION ALL 对于不匹配的列 我使用null as COLUMN NAM
  • 如何使用to_sql将pandas数据帧写入oracle数据库?

    我是一个新的oracle学习者 我正在尝试将 pandas 数据帧写入 oracle 表中 经过网上研究 我发现代码本身很简单 但我不知道为什么我的代码不起作用 我已经从本地文件中读取了 pandas 数据框 import cx Oracl
  • oracle日期序列?

    我有一个 oracle 数据库 我需要一个包含 2 年所有日期的表 例如来自01 01 2011 to 01 01 2013 首先我想到了一个序列 但显然唯一支持的类型是数字 所以现在我正在寻找一种有效的方法来做到这一点 欢呼骗局 如果您想
  • 在 Oracle 中创建数据库链接时出错

    我有两个数据库 需要编写跨数据库查询 所以我试图创建一个数据库链接 CREATE PUBLIC DATABASE LINK DBLink CONNECT TO SchemaName IDENTIFIED BY 123 using DBNam
  • 在 C# 中多次使用单个参数的更好方法

    我刚开始使用准备好的语句从数据库查询数据 并且在实现 C 参数 特别是 OracleParameters 时遇到问题 假设我有以下 SQL string sql select from table1 t1 table2 t2 where t
  • 如何比较表中最后一个和倒数第二个条目的值?

    我在 Oracle 中有一个名为quotes 的表 其中包含两列 date 和value 我想比较表中最后一个条目和倒数第二个条目的值 在此示例中 我想获取日期13 1 和 11 1在一行中以及每个日期的值之间的差异 10 5 5 报价表
  • 如何使用 EclipseLink 处理以 Oracle 类型作为输入或输出的 Oracle 存储过程调用

    我进行了概念验证 以了解使用 EclipseLink 调用存储过程的效率如何 我能够使用带有标量 原始数据类型 链接整数 varchar 等 的 EclispeLink 来调用 Oracle 存储过程 我想了解如何使用集合 Oracle 类
  • Oracle内置函数元数据

    有没有办法获取 Oracle 内置聚合和其他功能的元数据 例如AVG STDDEV SQRT ETC 我需要知道对象 id 和参数元 In the SYS ALL OBJECTS查看我找不到任何有用的东西 我也尝试过搜索SYS ALL AR
  • simpleJdbcCall 调用 Pl/SQL 过程 -- ORA-22922 不存在的 LOB 值

    我收到此 SQLException ORA 22922 不存在的 LOB 值 我的场景是 我正在调用一个采用结构数组的过程 该结构体包含三种类型 两种是日期 一种是 Clob 当我使用 Spring 的 simpleJdbcCall 设置
  • ORACLE:未找到数据——但数据存在

    调试包过程 当实际上有数据时却找不到数据 仅测试 SELECT SELECT trim trailing from GL SECURITY as DUMMY FROM b2k user b2k WHERE sms username FUCH
  • 什么会导致 Oracle ROWID 更改?

    AFAIK Oracle 中的 ROWID 表示相应数据文件中记录的物理位置 在什么情况下记录的ROWID可能会改变 我所知道的一个是分区表上的更新 它将记录 移动 到另一个分区 还有其他情况吗 我们的大多数数据库都是 Oracle 10
  • Oracle如何将UTC时间转换为本地时间(缺少偏移信息)

    我有一个包含日期列的表 我认为该列中的日期是以 UTC 格式保存的 我希望检索日期时以当地时间打印 这意味着当我从德国调用日期时 结果应该是这样的 2015 04 29 11 24 06 0200UTC EUROPE BERLIN 我尝试了

随机推荐

  • 如何改变图像的大小?

    我正在创建一款太空入侵者游戏 我希望所有图像都与屏幕分辨率成比例 这意味着它可以在所有屏幕尺寸上使用 并且所有图像都会缩小或变大 以便适合屏幕 游戏是全屏的 做到这一点最简单的技术是什么 这也是设置所有内容大小的最佳方法吗 你看过吗图像 g
  • Fedora 中的 Arduino 上传错误“stk500_recv(): 程序员没有响应”

    我正在尝试上传库存Blink在 Fedora Core 15 Linux 中使用 Arduino IDE 绘制草图 我收到此错误 avrdude stk500 recv 程序员没有响应 要重现该问题 通过 USB 线插入 Arduino U
  • 在 Task.Run 中使用 CancellationToken 超时不起作用[重复]

    这个问题在这里已经有答案了 好吧 我的问题很简单 为什么这段代码不抛出TaskCancelledException static void Main var v Task Run gt Thread Sleep 1000 return 10
  • Rails 3 Active Admin 将预设值添加到新记录

    我尝试从控制器和活动管理覆盖控制器执行此操作 但无法使其工作 用户创建一个网站 current user 有一个 id 属性 网站有一个 user id 属性 因此 当我创建一个新网站时 我想将 current user id 添加到 we
  • 如何作为用户无法查看的电子表格的“所有者”执行谷歌脚本

    希望这是一个非常简单的问题 我制作了一个 Google 脚本 可以写入单独的工作表 MasterSheet 中的单元格 这里有几个有用的问答帮助 这最终将部署嵌入到我提供给个人用户的多个不同工作表中 当用户对 MasterSheet 具有编
  • 如何更可靠地使用SerialPort类

    我一直在使用SerialPort在与我设计的一些外部硬件通信的应用程序中学习一段时间 在上述硬件的调试过程中 我发现了一些不可靠的地方 最近我偶然发现this http www sparxeng com blog software must
  • CURRENT_TIMESTAMP 和 GETDATE() 之间的区别[重复]

    这个问题在这里已经有答案了 有什么区别CURRENT TIMESTAMP and GETDATE 在 SQL Server 中 SELECT CURRENT TIMESTAMP GETDATE CURRENT TIMESTAMP是一个 AN
  • “标记”SVN 导出并进行修订

    我正在寻找以下情况的解决方案 我们使用 Subversion 除了使用签出的开发环境之外 我们还有一个测试环境 它应该尽可能类似于生产环境 因此 我们现在已将其设置为使用 SVN 导出来更新环境 但是 由于我们只想要最新版本 因此我们不知道
  • 如何在应用程序中将 NPM 模块与 Django 一起使用?

    我有一个包含 2 个应用程序的 Django 项目 我想在其中一个应用程序中使用 Notion API 因此我必须安装它的 NPM 模块 但是 我从未使用过 NPM 或捆绑器 我知道我必须使用一个用于导入语句 我不知道该怎么做 我应该在哪里
  • 如何始终在 api 平台 GET 操作中过滤特定字段值的集合?

    在 GET 操作中 我想从返回的集合中排除具有等于 true 的 archive 字段的实体 我希望它成为我的端点 例如 users 或 companies 的默认值 并且我想避免手动添加 URL 过滤器 例如 users filter a
  • boost::noncopyable 的 unordered_map 无法从操作符[]返回引用

    为了演示我的问题 请考虑这个无法编译的简单程序 include
  • 跨集群访问日志

    我有一个包含 3 个节点的集群 我已经配置了应用程序服务器的数据库 我想知道集群中各主机生成的访问日志是否相同 或者每个主机都有一个单独的 访问日志 用于记录对其主机的请求 我知道集群中的每个主机都维护自己的审核日志文件 访问日志的工作方式
  • 列表视图中的所有内容都会扩展到屏幕宽度。我可以改变这一点吗?

    我正在尝试为我正在制作的应用程序设计聊天屏幕 为了使其可滚动 我将所有聊天消息放置在列表视图中 但是我放置在列表视图中的所有内容都会水平扩展以匹配屏幕宽度 Listview 小部件的宽度 我可以关闭此功能 以便可以将我的聊天消息排列到一侧
  • 强制元类的只读属性

    是的 还在继续有了这个 https stackoverflow com questions 70729700 enforcing single instances from the metamodel 我的印象是 Raku 有这个强大的功能
  • 如何在 php 中安装 posix

    当我运行时 POSIX 没有出现php m cmd 然而 我从phpinfo enable posix shared在装有 Plesk 9 的 Linux 上 基本上我无法使用posix 功能如所述http www php net manu
  • 如何扩展pyserial的输入缓冲区大小

    我想通过串口与手机通信 向手机写入一些命令后 我使用了ser read ser inWaiting 得到它的返回值 但我总是得到总数1020 bytes字符 实际上 期望的回报应该已经结束50KB 我尝试过设置ser read 50000
  • 检测由 Tab 键启动的焦点?

    我想检测元素的焦点事件 但前提是该事件是由用户按 Tab 键启动的 例如
  • 什么更快?运行空函数或检查函数是否未定义? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在编写一些代码 其中作为参数传入的函数有时可能是未定义的 我很好奇这是一种不好的 做法 我想知道什么实际上更快 给出一个空函数 或者让函数检
  • 显示“No Javascript”div,但不向 google / facebook 共享服务显示

    我想在网站顶部附近显示一个 div 以建议未启用 JavaScript 的访问者启用 JavaScript 我想我已经通过使用 noscript 标签找到了一个好方法 不幸的是 我发现这个解决方案不太理想 因为谷歌的索引器和 Faceboo
  • Oracle - 使用存储过程创建文本文件

    需要有关在 Oracle 10 中使用存储过程创建文本文件的帮助 我对此很陌生 所以请从头开始指导我 我找到了代码并将其创建为存储过程 我运行它并且它是有效的 但我执行了它 我得到了错误 INVALID FILE NAME AT SYS U