【问题标题】:Read a file inside a package procedure in pl sql在 pl sql 中读取包过程中的文件
【发布时间】:2016-11-08 21:01:42
【问题描述】:

我正在尝试读取 Pl Sql 过程中的文本文件,但无济于事——似乎是语法错误。我究竟做错了什么?我的怀疑是我没有宣布我应该在哪里。这是包体的第一个路径:

CREATE OR REPLACE PACKAGE BODY COP_DBO.PACKAGE_TEMPLATE

 AS
  --
  --*****************************************************************************************************
  -- Purpose: Just a template
  --
  -- Inputs:
  --      in_vSTR    String
  --
  -- Returns:
  --      None
  --
  -- Mod History:
  --      06/29/2016 KEvin Palmer - Created initial version of this procedure
  --
  -- Error Handling:
  --      An error is raised if errors are encountered building or executing the SQL.
  --
  --*****************************************************************************************************
f UTL_FILE.FILE_TYPE;
s VACHAR2(200);
BEGIN
f := UTL_FILE.FOPEN('\\sp0034avrt\winixdb$\cow\dev', 'certs_file.txt', 'R');

UTL_FILE.GET_LINE(f,s);

UTL_FILE.FLCOSE(f);

dbms_outpit.put_line(s);
end;




  sql_statments arr_sql_t := arr_sql_t(); --initialize a empty lis 
  --------------------------------------------------------------------------------
  /*                    PROCEDURE AND VARIABLE 
                        INITILIZATION FOR  COW_DATALOAD_V2
  /***************************************************************************/
  ------------------------------------------------------------------------------
  --*********** PUT YOUR LIST OF CERTS BELOW ******************

  v_certList arr_claims_t := arr_claims_t('3803617642',
                                          '3805126441',
                                          '3876849047',
                                          '3873116383',
                                          '3873306670',
                                          '3878876718');

  --COP VARIABLES---
  new_copId   NUMBER; --NEW COP ID 
  prod_copId  NUMBER; --PROD COP ID
  new_seq_id  NUMBER; --NEW SEQ ID  
  suppl_count NUMBER; --supplemental count

  v_SQL     VARCHAR2(7000);
  v_certLst VARCHAR2(2000);
  n_success NUMBER := 0; --Count of success found
  n_total   NUMBER := 0; --Total Records proccessed
  n_suppl   NUMBER := 0; --Total Records proccessed
  n_orders  NUMBER := 0; --Total lmso orders downloaded

  /*cop procedure*/
  PROCEDURE COP_DATALOAD_V2(arr_claims arr_claims_t,
                            arr_sql    arr_sql_t) AS
  BEGIN

在那之后,我有两个程序。文件内容结束后的所有内容都以某种类型的语法错误突出显示。我做错了什么?

编辑:这个问题如何与其他问题重复?我没看到。对不起,如果它很明显。我完全看不出有什么相似之处。

【问题讨论】:

  • 您有一些明显的拼写错误。只需查看编译器告诉您的行号并修复这些单词(VACHAR;FLCOSE 等)。
  • 另一个错字 - dbms_outpit 而不是 dbms_output
  • 我修复了这些错误,但现在它无法识别程序。说这是一个无效的声明。此外,为什么编译器不指出这些拼写错误?我正在使用蟾蜍。它给我的所有错误几乎总是完全不合时宜!

标签: sql oracle plsql oracle11g oracle-sqldeveloper


【解决方案1】:

典型的包体声明如下所示

create or replace package body package_name is

  var_name number;

  procedure proc_name is
  begin
    do_smth;
  end;

begin
   init_smth;
end ;

变量、方法、初始化。在您的代码中相反:

create or replace package body package_name is

  var_name number;

begin
   init_smth;
end ;

  var_name2 number;

  procedure proc_name is
  begin
...

变量,初始化,变量,方法。看起来你应该把代码放在正确的地方

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-27
    • 2016-03-17
    • 2014-11-03
    • 1970-01-01
    • 2020-09-21
    相关资源
    最近更新 更多