2016-07-06 9 views
-1

Ich versuche, eine Textdatei in einer Pl-Sql-Prozedur zu lesen, aber ohne Erfolg - Syntaxfehler scheint es. Was mache ich falsch? Mein Verdacht ist, dass ich nicht etwas verkünde, wo ich sein sollte. Hier ist der erste Pfad des Paketkörpers:Eine Datei in einer Paketprozedur in PL sql lesen

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 

Danach habe ich zwei Verfahren. Alles nach dem Ende für den Dateikram wird mit irgendeiner Art von syntaktischem Fehler hervorgehoben. Was mache ich falsch?

EDIT: Wie ist diese Frage ein Duplikat dieser anderen Frage? Ich sehe es nicht. Tut mir leid, wenn es offensichtlich ist. Ich sehe die Ähnlichkeit überhaupt nicht.

+0

Sie haben ein paar offensichtliche Fehlbuchstabierungen. Schauen Sie sich einfach die Zeilennummer an, die Ihnen der Compiler sagt, und korrigieren Sie diese Wörter (VACHAR; FLCOSE usw.). –

+0

ein weiterer Tippfehler - dbms_outpit statt dbms_output –

+0

Mögliches Duplikat von [Array in IN() -Klausel Oracle PLSQL] (http://StackOverflow.com/Questions/15515772/array-in-in-in-Clause-oracle-Plsql) –

Antwort

1

Typische Packungskörper Deklaration sieht wie folgt aus

create or replace package body package_name is 

    var_name number; 

    procedure proc_name is 
    begin 
    do_smth; 
    end; 

begin 
    init_smth; 
end ; 

Variablen, Methoden, Initialisierung. In Ihrem Code als Gegenteil:

create or replace package body package_name is 

    var_name number; 

begin 
    init_smth; 
end ; 

    var_name2 number; 

    procedure proc_name is 
    begin 
... 

Variablen, Initialisierung, Variablen wieder, Methoden. Es sieht so aus, als sollten Sie Teile des Codes an den richtigen Stellen platzieren.