小编Mig*_*sip的帖子

将clob字段从oracle导出到Azure DB上的文本字段时出错

我在Oracle Table上有一个存储PDF文件的CLOB字段.当我尝试将此字段导出到Azure上的SQL Server Db时,我收到此错误:

2017/01/19 11:14:32 - ImpostoRenda 2.0 - ERROR (version 6.1.0.1-196, build 1 from 2016-04-07 12.08.49 by buildguy) : Unexpected batch update error committing the database connection.
2017/01/19 11:14:32 - ImpostoRenda 2.0 - ERROR (version 6.1.0.1-196, build 1 from 2016-04-07 12.08.49 by buildguy) : org.pentaho.di.core.exception.KettleDatabaseBatchException: 
2017/01/19 11:14:32 - ImpostoRenda 2.0 - Error updating batch
2017/01/19 11:14:32 - ImpostoRenda 2.0 - I/O Error: Connection reset by peer: socket write error
2017/01/19 11:14:32 - ImpostoRenda 2.0 - 
2017/01/19 11:14:32 - …
Run Code Online (Sandbox Code Playgroud)

sql-server oracle pentaho azure pentaho-data-integration

13
推荐指数
1
解决办法
520
查看次数

使用PL/SQL创建Excel文件(.xlsx)

关于我之前的问题返回显式游标的SQL语句,我能够(.xls)使用DBMS_SQL和生成一个Excel 文件UTL_FILE并传递SYS_REFCURSOR(代码在上一个问题中).但是,我遇到的一个挑战是生成的文件超过25 MB.我将通过电子邮件将其传输给业务用户,它肯定会填满他们的邮箱大小.当我手动提取xlsx使用SQL Developer它时,只生成大约4 MB的数据.

要解决这个问题,是否可以通过PL/SQL以下方式进行?

  1. 使用更高版本的Excel(.xlsx)生成文件以压缩大小
  2. .xls在传输之前压缩文件

我也在这里回顾了类似的帖子,例如在Oracle中使用UTL_FILE包在ExcelSheet中编写,但正如答案所述,它需要使用Java.所以它不适用于我.另一篇文章,即从Oracle数据库创建Excel电子表格,也在使用xls.所以它也不适用.

有什么想法吗?

Oracle版本:

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
"CORE   11.2.0.4.0  Production"
TNS for Solaris: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production
Run Code Online (Sandbox Code Playgroud)

oracle excel plsql

8
推荐指数
1
解决办法
3万
查看次数

ORA-29278:SMTP暂时错误:运行UTL_MAIL时服务不可用

我们计划安装该UTL_MAIL软件包,并且当前正在测试开发环境中的安装步骤。成功安装UTL_MAIL软件包脚本并创建足够的“ PUBLIC同义词和授予”之后,ORA-29278在运行下面的测试“匿名块”时会出现错误:

BEGIN 

    UTL_MAIL.SEND(sender     => 'xxx@oracle.com'
                , recipients => 'Migs.Isip.23@gmail.com'
                , subject    => 'Testmail'
                , message    => 'Hello');

END;
Run Code Online (Sandbox Code Playgroud)

错误消息的完整详细信息:

ORA-29278: SMTP transient error: 421 4.3.2 Service not available
ORA-06512: at "SYS.UTL_MAIL", line 662
ORA-06512: at "SYS.UTL_MAIL", line 679
ORA-06512: at line 3
29278. 00000 -  "SMTP transient error: %s"
*Cause:    A SMTP transient error occurred.
*Action:   Correct the error and retry the SMTP operation.    
Run Code Online (Sandbox Code Playgroud)

根据相关链接的研究(使用PLSQL发送电子邮件),我可能需要设置适当的访问控制列表(ACL)才能起作用。但是,执行以下脚本后,我仍然遇到相同的错误。

DECLARE
   -- ACL name to …
Run Code Online (Sandbox Code Playgroud)

oracle plsql

6
推荐指数
1
解决办法
2万
查看次数

将水平CSV模板转换为表格格式

免责声明:请留下详细而详细的问题.我想尽可能明确要求.

以下种子表(SAMPLE_EXTRA_INFO)存储员工的额外信息:

EIT_ID  EMPLOYEE_NUMBER     EXTRA_INFORMATION       INFORMATION_CATEGORY    INFORMATION1    INFORMATION2    INFORMATION3 .... INFORMATION10
------  ------------------- ---------------------   ----------------------  --------------  -------------   ------------      --------------
1       11111               Academic Rank           Next Academic Rank      Professor       Y               10.5              (NULL)      
2       11111               Academic Rank           Academic Rank           Ass.Professor   N               (NULL)            (NULL)  
3       11111               Academic Rank           Effective Start Date    01-JAN-2017     (NULL)          (NULL)            (NULL)
4       11111               Academic Rank           Effective End Date      31-DEC-4712     (NULL)          (NULL)            (NULL)
5       11111               Alien Income Forecast   Income_code             P               (NULL)          (NULL)            (NULL)    
6       11111               Alien Income Forecast   Date …
Run Code Online (Sandbox Code Playgroud)

sql oracle plsql

6
推荐指数
1
解决办法
180
查看次数

REGEXP_SUBSTR与INSTR和SUBSTR的性能和可读性

从我的另一个问题,使用带有字符串限定符的REGEXP_SUBSTR,我试图决定哪种方法更好用.

由此产生的数据集只应delimters之前显示的字符串PLE,#ALL以正确的顺序.包中已有的当前查询是这样的(DDL和DML位于帖子的底部):

SELECT  DATA1
      , DECODE(SIGN(0 - instr(DATA1, 'PLE')), -1, SUBSTR(DATA1, 1, instr(DATA1, 'PLE') - 1)) GET_DATA_TILL_FIRST_PLE
      , DECODE(SIGN(0 - instr(DATA1, '#')), -1, SUBSTR(DATA1, 1, instr(DATA1, '#') - 1)) GET_DATA_TILL_FIRST_NUM_SIGN
      , DECODE(SIGN(0 - instr(DATA1, 'ALL')), -1, SUBSTR(DATA1, 1, instr(DATA1, 'ALL') - 1)) GET_DATA_TILL_FIRST_ALL
      , NVL(DECODE(SIGN(0 - instr(DATA1, 'PLE')), -1, SUBSTR(DATA1, 1, instr(DATA1, 'PLE') - 1), 0,
        DECODE(SIGN(0 - instr(DATA1, '#')), -1, SUBSTR(DATA1, 1, instr(DATA1, '#') - 1), 0,
        DECODE(SIGN(0 - instr(DATA1, 'ALL')), …
Run Code Online (Sandbox Code Playgroud)

regex sql oracle

5
推荐指数
1
解决办法
5274
查看次数

您在Oracle中编写和编辑存储过程有什么用?

在Oracle中编辑和编写存储过程有很多选项; 什么是最好的工具,为什么?(每个答案一个工具.)

sql oracle toad stored-procedures oracle-sqldeveloper

3
推荐指数
2
解决办法
8792
查看次数

查找调用 SQL_ID 的 PL/SQL 包

我们有某个 SQL_ID 存在性能问题(例如 cd123812jedjdu)。这是从 PKG1 调用的 AWR 报告中显示的。但是,PKG1 内部调用了这么多包,如下所示:

PKG1.MAIN
-> PKG1.PROC1
-> -> PKG2.PROC1
-> -> PKG2.PROC2
-> -> PKG2.PROC3
-> PKG1.PROC2
-> -> PKG3.PROC1
-> -> PKG3.PROC2
-> -> PKG3.PROC3
-> PKG1.PROC3
-> -> PKG4.PROC1
-> -> PKG4.PROC2
-> -> PKG4.PROC3
-> PKG1.PROC4
-> -> PKG5.PROC1
-> -> PKG5.PROC2
-> -> PKG5.PROC3
Run Code Online (Sandbox Code Playgroud)

经过数小时的跟踪,我发现它是从PKG4.PROC3. 无论如何我可以找到调用 SQL_ID 的实际 PL/SQL 包,也许是v$视图?

注意:我知道 SQL_TEXT 可以是来自v$视图的查询,但是有多个具有相同 SQL_TEXT 的类似查询。

sql oracle plsql

3
推荐指数
1
解决办法
171
查看次数

返回显式游标的SQL语句

以Oracle论坛中显示的示例:使用plsql生成excel(xls),我想从查询的数据集生成excel文件.

提供的示例有效.但是,我遇到了一些挑战:

  1. 我的SQL查询很长,超过了VARCHAR24000字符限制.
  2. 我想将参数传递给我的查询.
  3. 我想以一种非常简单的方式完成它而不使用动态SQL(如果可能的话).

我提出的是下面的内容:

包装定义:

create or replace package tabletoexcel
as

  PROCEDURE run_query(p_fh  IN UTL_FILE.FILE_TYPE
                    , p_cur IN SYS_REFCURSOR);
  PROCEDURE start_workbook (p_fh  IN UTL_FILE.FILE_TYPE);
  PROCEDURE end_workbook (p_fh  IN UTL_FILE.FILE_TYPE);
  PROCEDURE start_worksheet(p_fh        IN UTL_FILE.FILE_TYPE
                         ,  p_sheetname IN VARCHAR2);
  PROCEDURE end_worksheet (p_fh  IN UTL_FILE.FILE_TYPE);
  PROCEDURE set_date_style (p_fh  IN UTL_FILE.FILE_TYPE);

end tabletoexcel;  

create or replace package body tabletoexcel
as

  PROCEDURE run_query(p_fh    UTL_FILE.FILE_TYPE
                    , p_sql IN VARCHAR2) IS
    v_v_val     VARCHAR2(4000);
    v_n_val     NUMBER;
    v_d_val     DATE;
    v_ret       NUMBER;
    c           NUMBER; …
Run Code Online (Sandbox Code Playgroud)

sql oracle sys-refcursor

2
推荐指数
1
解决办法
1464
查看次数

使用PL/SQL更好的文件压缩包?

我有一个xlsx文件sample.xlsx存储在一个远程目录中,大小约为1,699 KB.我已经尝试了两个流行的PL/SQL包(UTL_COMPRESSAS_ZIP),它们将它们压缩成gzipzip.

使用下面的代码AS_ZIP,我已将文件压缩为1,619 KB:

declare
  g_zipped_blob blob;
  l_file_name   varchar2(100) := 'sample.xlsx';
  l_directory   varchar2(100) := 'EXT_TAB_DATA';
begin
  as_zip.add1file( g_zipped_blob, l_file_name, as_zip.file2blob(l_directory, l_file_name));
  as_zip.finish_zip( g_zipped_blob );
  as_zip.save_zip( g_zipped_blob, l_directory, 'my2.zip' );
  dbms_lob.freetemporary( g_zipped_blob );
end;
Run Code Online (Sandbox Code Playgroud)

使用下面的代码(取自原始帖子)UTL_COMPRESS,我将文件压缩为1,618 KB:

DECLARE
   in_filename VARCHAR2(100) := 'sample.xlsx';
   l_directory   varchar2(100) := 'EXT_TAB_DATA';
   src_file   BFILE;
   v_content  BLOB;
   v_blob_len INTEGER;
   v_file     utl_file.file_type;
   v_buffer   RAW(32767);
   v_amount   BINARY_INTEGER := 32767;
   v_pos      INTEGER := 1;
BEGIN
   src_file …
Run Code Online (Sandbox Code Playgroud)

oracle zip gzip plsql

1
推荐指数
1
解决办法
1448
查看次数