Execute Immediate - Exception handelling

Hi Guys,
I have the following code that loops through and populates the execute immediate statement with local variables from the cursor.
The only problem is when the statement fails and goes to the exception, I want the local variable to be cleared. This is causing me problems becuase it is populating incorrect data where it fails.
LOOP
BEGIN
EXECUTE IMMEDIATE 'SELECT MAX(REC_EXTRACT_DATE) FROM '
|| rg_e_date.source_name
INTO lv_extract_date;
EXECUTE IMMEDIATE 'SELECT count(*) FROM '
|| rg_e_date.source_name
|| '
where rec_current_flag = ''Y'''
INTO lv_num_of_records;
EXCEPTION
WHEN OTHERS
THEN
NULL;
END;
Any help would be apprechiated.
Cheers

user8652755 wrote:
Hi Guys,
I have the following code that loops through and populates the execute immediate statement with local variables from the cursor.
The only problem is when the statement fails and goes to the exception, I want the local variable to be cleared. This is causing me problems becuase it is populating incorrect data where it fails.
LOOP
BEGIN
EXECUTE IMMEDIATE 'SELECT MAX(REC_EXTRACT_DATE) FROM '
|| rg_e_date.source_name
INTO lv_extract_date;
EXECUTE IMMEDIATE 'SELECT count(*) FROM '
|| rg_e_date.source_name
|| '
where rec_current_flag = ''Y'''
INTO lv_num_of_records;
EXCEPTION
WHEN OTHERS
THEN
NULL;
END;
Any help would be apprechiated.
CheersWhy does the statement fail?
I'm guessing you don't know because you have a generic exception catch there (that's bad).
Also, if you aren't aware, this is a 'bad' method of programming in Oracle (i'm assuming you are storing SQL in database tables, or some other such fashion). It won't be good for performance if you need this application to be quick and scalable. Just a word of caution.

Similar Messages

  • Strange Case on Security Rights and Dynamic SQL (Execute Immediate)

    Hi friends, (forgive me if I write with wrong grammar and sentence, I not used English for daily)
    I got a weird trouble yesterday.
    I created a package (we can called it X, OK!?) which containing Execute Immediate Statement, that function to delete a table (we can called it Y).
    Several days ago, it's worked, but yesterday it wasn't. Last things happened before was recreate those table, and regrant to a role which including user account that execute package X.
    Error Msg shown is ORA-00942 : Table or view does not exist. After rechecked and rechecked, I found nothing that could trigger that error, I used DBMS_OUTPUT.PUT_LINE to debug and show what statement resulted and executed, I cut and paste, and it's worked. I created anonymous PL/SQL Block, and wrote it and executed it, and worked.
    Finally, today, We Grant explicitly those table to user account Y, not via Role, ... and it's work. Interesting thing I think :P
    And, I revoke, execute package and run. I think, there's something about Oracle he..he.. :D .
    Can somebody help me and explain me the reason of that strange symptomp? and right solution? I must know it, because several days again, it's launched / install.
    TIA

    Here is the procedure that get troubled into :)
    PROCEDURE DeleteOld_Job(
    p_Job_Code IN VARCHAR2,
    p_User_Id IN VARCHAR2,
    p_Parameter_Entry IN VARCHAR2,
    p_Status OUT NUMBER )
    IS
    StrSql VARCHAR2(1000);
    CURSOR CTable_Used_By_Report IS
    SELECT TABLE_NAME
    ,TABLE_OWNER
    FROM TABLE_USED_BY_JOB
    WHERE
    Job_Code = p_Job_Code
    BEGIN
    p_Status := 1;
    DBMS_OUTPUT.PUT_LINE('p_Job_Code '| |p_Job_Code );
    DBMS_OUTPUT.PUT_LINE('p_Parameter_Entry '| |p_Parameter_Entry );
    FOR Item IN CTable_Used_By_Report
    LOOP
    StrSql := 'DELETE '| |Item.TABLE_OWNER| |'.'| |Item.TABLE_NAME| |' T WHERE EXISTS ( SELECT 1 FROM USERBATCH.HISTORY_JOB H WHERE H.USER_ID = ' ;
    StrSql := StrSql| |''''| |p_User_Id| |''''| |' AND H.Job_Code = '| |''''| |p_Job_Code| |''''| |' AND H.PARAMETER_ENTRY = '| |'''' | |p_Parameter_Entry| |''''| |' AND T.SESSION_ID = H.TRANSACTION_ID)';
    DBMS_OUTPUT.PUT_LINE(StrSql);
    DBMS_OUTPUT.PUT_LINE(Item.TABLE_OWNER| |'.'| |Item.TABLE_NAME);
    EXECUTE IMMEDIATE StrSql;
    END LOOP;
    DBMS_OUTPUT.PUT_LINE('DELETE USERBATCH.HISTORY_JOB WHERE USER_ID ='''| | p_User_Id | |'''
    AND Job_Code ='''| | p_Job_Code | |''' AND PARAMETER_ENTRY = '''| | p_Parameter_Entry | |'''');
    EXECUTE IMMEDIATE 'DELETE USERBATCH.HISTORY_JOB WHERE USER_ID ='''| | p_User_Id | |'''
    AND Job_Code ='''| | p_Job_Code | |''' AND PARAMETER_ENTRY = '''| | p_Parameter_Entry | |'''';
    COMMIT;
    EXCEPTION
    WHEN OTHERS THEN
    ROLLBACK;
    p_Status := 0;
    DBMS_OUTPUT.PUT_LINE( SUBSTR(SQLERRM,1,255) );
    END DeleteOld_Job;
    TIA
    null

  • Java Stored Procedure in EXECUTE IMMEDIATE

    Hi,
    I need advice for the following.
    I'm on Oracle 11g R2. I'm testing application in Oracle 11gR1 and R2 and Oracle Express.
    Purpose is to generate XML reports.
    I have PLSQL Stored Procedure which does that, but since there is bug in Oracle11gR2 related to XMLTRANSFORM I have and Java Stored Procedure which is workaround. They are both compiled, valid etc.
    Java class is :
    import java.io.PrintWriter;
    import java.io.Writer;
    import oracle.xml.parser.v2.DOMParser;
    import oracle.xml.parser.v2.XMLDocument;
    import oracle.xml.parser.v2.XSLProcessor;
    import oracle.xml.parser.v2.XSLStylesheet;
    * This class is used as Java stored procedure
    * There is a bug on Oracle11gR2, related to the limitation on the number of style sheet instructions
    * This stored procedure is workaround when PLSQL code can not be used.
    * File must not have package, otherwise is wrongly compiled in DB
    public class JavaXslt {
         public static void XMLTtransform(oracle.sql.CLOB xmlInput,oracle.sql.CLOB xslInput,oracle.sql.CLOB output) throws Exception{
              DOMParser parser;
              XMLDocument xml;
              XMLDocument xsldoc;
              try{
                   parser = new DOMParser();
                   parser.parse(xmlInput.getCharacterStream());
                   xml = parser.getDocument();
                   parser.parse(xslInput.getCharacterStream());
                   xsldoc = parser.getDocument();
                   XSLProcessor processor = new XSLProcessor();
                   XSLStylesheet xsl = processor.newXSLStylesheet(xsldoc);
                   Writer w = output.setCharacterStream(1L);
                   PrintWriter pw = new PrintWriter(w);
                   processor.processXSL(xsl, xml, pw);
              }catch (Exception ex){
                   throw ex;
    PROCEDURE Java_XmlTransform (xml CLOB, xslt CLOB, output CLOB) AS LANGUAGE JAVA
    NAME 'JavaXslt.XMLTtransform(oracle.sql.CLOB, oracle.sql.CLOB, oracle.sql.CLOB)';
    I'm calling Java stored procedure from PLSQL Stored procedure (if it is Oracle11gR2) like that :
    Java_Proc.Java_XmlTransform(inputXML, xslt, res);
    So till here everything works ok. XSLT as applied and output XML (res) is OK.
    But when Oracle Express is used Java is out of the question, so there is no Java stored procedure. Howewer PLSQL Stored procedure is still needed.
    So I had to put call to Java Stored procedure in EXECUTE IMMEDIATE statement in order to compile to PLSQL package.
    But when I do that :
    EXECUTE IMMEDIATE 'BEGIN Java_Proc.Java_XmlTransform (:1, :2, :3); END;' USING inputXML, xslt, res;
    result value CLOB (res) has zero length...
    What am I missing? Should i set return value to Java class?
    Hope my explanations are clear though.
    Thanks

    Hi odie_63,
    Thanks for quick response.
    I didn't clearly explained.
    When using Oracle 11gR1 and Oracle Express I'm using only PLSQL Procedure.
    When using Oracle 11gR2 i have to use Java Stored procedure because there is documented bug in R2.
    That's why i have to use EXECUTE IMMEDIATE. I don't know which version is the client DB and whether there is or no Java procedures.
    I did tried
    EXECUTE IMMEDIATE 'BEGIN Java_Proc.Java_XmlTransform (:1, :2, :3); END;' USING IN inputXML, IN xslt, OUT res; and the result was ORA-06537: OUT bind variable bound to an IN position
    When using IN OUT for last parameter i.e.
    EXECUTE IMMEDIATE 'BEGIN Java_Proc.Java_XmlTransform (:1, :2, :3); END;' USING IN inputXML, IN xslt, IN OUT res;
    there is no exception, but still DBMS_LOB.getlength(res) = 0
    Thanks

  • How to execute a statement in forms procedure like SQL EXECUTE IMMEDIATE

    Hi to all,
    In a form I have created this procedure:
    PROCEDURE insert_rows (
    tbName IN VARCHAR2,
    list_of_fields IN VARCHAR2,
    origin_table IN VARCHAR2,
    wCondition IN VARCHAR2 DEFAULT NULL)
    IS
    where_clause VARCHAR2 (2000) := ' WHERE ' || wCondition ;
    table_to_fill VARCHAR2 (30);
    BEGIN
    -- Exist the table ?
    SELECT OBJECT_NAME INTO table_to_fill FROM USER_OBJECTS
    WHERE OBJECT_NAME = UPPER(origin_table) AND OBJECT_TYPE = 'TABLE' ;
    IF wCondition IS NULL THEN
    where_clause := NULL;
    END IF ;
    EXECUTE IMMEDIATE 'INSERT INTO ' || table_to_fill || ' SELECT ' || list_of_fields || ' FROM ' || origin_table || where_clause ;
    EXCEPTION
    WHEN NO_DATA_FOUND THEN
    -- Here the Alert
    END;
    But, when I compile this error is displayed:
    Function not supported from client side application corresponding to SQL statement EXECUTE IMMEDIATE
    How can to correct this script for my form ?
    I hope in Your help.
    Best Regards
    Gaetano

    You have two options:
    1)To create this procedure in database
    2)Yo use the forms built-in FORMS_DDL instead of execute immediate , altering the one provided
    Sim

  • Problem wile EXECUTE IMMEDIATE DDL statement in procedure

    Hi ,
    This is my procedure and it's getting compiled but while executing procedure getting this error,
    can anyone please tell me how to fix this?
    create or replace procedure construct_Table (name_table IN VARCHAR2)
    IS
    v_tab_name varchar2(40):=NULL;
    v_sql_Stmt varchar2(32767) := NULL;
    finalquery varchar2(32767) :=NULL;
    cursor tp is
    select COLUMN_NAME,DATA_TYPE,DATA_PRECISION,CHAR_LENGTH  from all_tab_cols where table_name=name_table;
    BEGIN
    begin
    select TABLE_NAME into v_tab_name from user_tables where table_name=name_table;
    EXCEPTION
    WHEN no_Data_found
    THEN
    DBMS_OUTPUT.PUT_LINE('No such table exist');
    end;
    if(v_tab_name IS NOT NULL)then
    finalquery := 'CREATE TABLE '||v_tab_name||'_DUMMY (';
       FOR I IN tp LOOP
       if(I.data_type='VARCHAR2') then
       v_sql_stmt := finalquery ||I.column_name||' '||I.data_type||'('||I.char_length||') ';
       elsif(I.data_type='NUMBER') then
       v_sql_stmt := finalquery ||I.column_name||' '||I.data_type||'('||I.DATA_PRECISION ||') ';
       else
       v_sql_stmt := finalquery ||I.column_name||' '||I.data_type ;
       end if;
       finalquery := v_sql_stmt || ',';
       END LOOP;
       finalquery := SUBSTR(finalquery,1,LENGTH(finalquery) - 1)||')';
       dbms_output.put_line(finalquery);
       EXECUTE IMMEDIATE'grant create any table to cmsuser';
       EXECUTE IMMEDIATE finalquery;
    end if; 
    END;
    /This is the error I am getting
    Error starting at line 1 in command:
    begin
    construct_Table ('EMP');
    end;
    Error report:
    ORA-01031: insufficient privileges
    ORA-06512: at "CMSUSER.CONSTRUCT_TABLE", line 30
    ORA-06512: at line 2
    01031. 00000 -  "insufficient privileges"
    *Cause:    An attempt was made to change the current username or password
               without the appropriate privilege. This error also occurs if
               attempting to install a database without the necessary operating
               system privileges.
               When Trusted Oracle is configure in DBMS MAC, this error may occur
               if the user was granted the necessary privilege at a higher label
               than the current login.
    *Action:   Ask the database administrator to perform the operation or grant
               the required privileges.
               For Trusted Oracle users getting this error although granted the
               the appropriate privilege at a higher label, ask the database
               administrator to regrant the privilege at the appropriate label.Thanks ,
    Deekay.

    Deekay,
    If you grant create table privilege and create table in the same procedure, then how you will differentiate that which user you granted the privilege and in which schema, you are creating the table. Here, you are granting to "cmuser", but in the same schema, you are creating the table also. How can a user grant privilege to himself?
    Login as DBA, grant create any table privilege to "cmuser" from dba. Then, you can execute you procedure in "cmuser" schema.

  • Using EXECUTE IMMEDIATE with Create Table SQL Statement not working

    Hi ,
    I am all the privileges given from the SYSTEM user , but still i am not able to create a table under procedure . Please see these and advice.
    create or replace procedure sp_dummy as
    begin
    Execute Immediate 'Create table Dummy99_99 (Dummy_Field number)';
    end;
    even i tried this way also
    create or replace PROCEDURE clearing_Practise(p_file_id in varchar2, p_country in VARCHAR2,p_mapId in VARCHAR2)
    AUTHID CURRENT_USER AS
    strStatusCode VARCHAR2(6);
    BEGIN
    EXECUTE IMMEDIATE 'create table bonus(name varchar2(50))';
    commit;
    EXCEPTION
    WHEN OTHERS THEN
    dbms_output.put_line('ERROR Creating Table');
    END ;

    William Robertson wrote:
    Since the syntax is correct, my guess is you do not have CREATE TABLE system privilege granted directly to your account. A common scenario is that you have this privilege granted indirectly via a role, allowing you to create tables on the command line, but stored PL/SQL is stricter and requires a direct grant and therefore the procedure fails with 'insufficient privileges'.A bit like he's already been told on his first thread...
    Using of Execute Immediate in Oracle PLSQL
    Generally you would not create tables from stored PL/SQL. Also as you have found out, it's best not to hide exceptions with 'WHEN OTHERS THEN [some message which gives less detail than the one generated by Oracle]'.Again like he was told on the other thread.
    There's just no telling some people eh! :)

  • Using Execute Immediate in PLSQL block Vs Stand alone procedure

    I am facing very unusual ( atleast unusual to me ) with usage of "Execute Immediate" statement.
    I have a table dynamic_sql with one column plsql_block as VARCHAR2(4000);
    I have stored some PLSQL blocks ('DECLARE ..... BEGIN.... END.... ) in this column .
    Now I want to execute these PLSQL blocks one after other depending on certain conditions .
    In order to archive this I wrote a PLSQL block as below
    DECLARE
    Cursor c1 is
    select plsql_block from dynamic_sql
    begin
    for irec in c1
    loop
    <<< Condition >>>
    begin
    execute_immediate(irec.plsql_block);
    exception
    when others then
    raise_application_error(-20001,'error ' ||irec.plsql_block||' '||sqlerrm);
    end loop ;
    end ;
    With above PLSQL block , "execute immediate" is executing PLSQL block successfully without any error
    But When I converted above PLSQL block into standalone procedure as shown below , I am getting error .
    CREATE OR REPLACE procedure test AS
    Cursor c1 is
    select plsql_block from dynamic_sql
    begin
    for irec in c1
    loop
    <<< Condition >>>
    begin
    execute_immediate(irec.plsql_block);
    exception
    when others then
    raise_application_error(-20001,'error ' ||irec.plsql_block||' '||sqlerrm);
    end loop ;
    end ;
    BEGIN
    test;
    end ;
    It is showing the value of irec.plsql_block but not showing sqlerrm...
    I found this is very unusual as I am able to execute "execute immediate" statement with PLSQL block but not with similar procedure .
    can anybody explain me why this is happening?
    Thanks in Advance
    Amit

    Hello,
    It doesn't make any sense to add SQLERRM for user defined exception, unless you want to raise application error for already defined error (e.g NOT_DATA_FOUND, ..)
    Check following piece of code and its output,
    CREATE OR REPLACE PROCEDURE myinsert1
    AS
       v_count   NUMBER;
       v_sql     VARCHAR2 (300);
    BEGIN
       v_sql :=
          'INSERT INTO ENTITY_EMPLOYEE VALUES(0,''TIM'',''LASTNAME'',10000)';
       BEGIN
          EXECUTE IMMEDIATE v_sql;
          COMMIT;
       EXCEPTION
          WHEN OTHERS
          THEN
             DBMS_OUTPUT.PUT_LINE (SUBSTR (SQLERRM, 1, 300));
             RAISE_APPLICATION_ERROR (-20002, 'My Error ' || SQLERRM, TRUE);
             RAISE;
       END;
    END;
    Output._
    ORA-20002: My Error ORA-00001: unique constraint (ENTITY_EMPLOYEE_PK) violated
    ORA-06512: at "MYINSERT1", line 21
    ORA-00001: unique constraint (ENTITY_EMPLOYEE_PK) violated
    ORA-06512: at line 2
    Regrds

  • Possible bug with TREAT and EXECUTE IMMEDIATE

    Hello, i experienced a strange behavior which seems to be a bug.
    Consider following definitions:
    CREATE OR REPLACE TYPE T_Base FORCE AS OBJECT (
      DummyProperty NUMBER
    ) NOT FINAL;
    CREATE OR REPLACE TYPE T_Child UNDER T_Base (
      AnotherDummyProperty  NUMBER
    CREATE OR REPLACE FUNCTION SpecificValidation (iValue T_Child) RETURN NUMBER IS
    BEGIN
      -- some specific validation is done here, not important for the example
      RETURN NULL;
    END;
    CREATE OR REPLACE PROCEDURE ValidateIt (iValue T_Child) IS
      lResult NUMBER;
    BEGIN
      -- The principle used here is that each client can have its own implementation of validation function, and when it does not exist, we do not care.
      -- In reality we put functions and procedures into packages, I narrowed it to a minimal working example.
      BEGIN
        EXECUTE IMMEDIATE 'BEGIN :lResult := SpecificValidation(:iValue); END;'
          USING OUT lResult, IN iValue;
      EXCEPTION WHEN OTHERS THEN
        IF INSTR(SQLERRM, 'PLS-00201') = 0 THEN
          RAISE;
        END IF;
      END;
    END;
    CREATE OR REPLACE PROCEDURE Process (iValue T_Base) IS
    BEGIN
      -- in fact we know that iValue must be of typ T_Child, it is checked using IS OF ( ) operator and exception is raised if this check fails
      -- This does not work for some reason.
      -- It fails in EXECUTE IMMEDIATE with PLS-00306. I don't really get why, because ValidateIt accepts a value of type T_Child and it passes it to the validation procedure, which also expects value of type T_Child.
      ValidateIt(TREAT(iValue AS T_Child));
    END;
    CREATE OR REPLACE PROCEDURE Process2 (iValue T_Base) IS
      lChild  T_Child;
    BEGIN
      -- The only difference here is that result of TREAT is saved to a variable.
      -- This works as expected.
      lChild := TREAT(iValue AS T_Child);
      ValidateIt(lChild);
    END;
    In reality it is much more complex, I narrowed it to a minimal working example.
    Now when running this:
    DECLARE
      lItem T_Base := T_Child(5, 2);
    BEGIN
      BEGIN
        -- This call will end up with PLS-00306 error.
        Process(lItem);
        dbms_output.put_line('Process completed successfully.');
      EXCEPTION WHEN OTHERS THEN
        dbms_output.put_line('Exception when calling Process.');
        dbms_output.put_line(SQLERRM);
        dbms_output.put_line(DBMS_UTILITY.FORMAT_ERROR_BACKTRACE);
      END;
      BEGIN
        Process2(lItem);
        dbms_output.put_line('Process2 completed successfully.');
      EXCEPTION WHEN OTHERS THEN
        dbms_output.put_line('Exception when calling Process2.');
        dbms_output.put_line(SQLERRM);
        dbms_output.put_line(DBMS_UTILITY.FORMAT_ERROR_BACKTRACE);
      END;
    END;
    then call to Process fails with PLS-00306 on EXECUTE IMMEDIATE.
    The only difference between Process and Process2 is that in Process2, result of TREAT is saved to a variable of type T_Child.
    Is this behavior documented somwhere or is it a bug?

    That's interesting. I would say it is, or should be, a bug.
    Also interesting is, when I re-write your example to eliminate dynamic SQL and instead rely on dynamic method dispatch, the problem goes away... first, the changes:
    drop type T_Child;
    drop type T_Base
    CREATE OR REPLACE TYPE T_Base FORCE AS OBJECT ( 
      DummyProperty NUMBER 
    ) NOT FINAL
    CREATE OR REPLACE TYPE T_Child UNDER T_Base ( 
      AnotherDummyProperty  NUMBER 
    create or replace type T_Base_Processor as object (
      dummyProperty    number
    , static FUNCTION GetClientProcessor(iClientId varchar2) RETURN T_Base_Processor
    , member FUNCTION SpecificValidation (iValue T_Child) RETURN NUMBER
    , member PROCEDURE ValidateIt (iValue T_Child)
    , member PROCEDURE Process (iValue T_Base)
    , member PROCEDURE Process2 (iValue T_Base)
    ) NOT FINAL
    create or replace type T_Another_Processor under T_Base_Processor (
      overriding member FUNCTION SpecificValidation (iValue T_Child) RETURN NUMBER
    create or replace type body T_Base_Processor
    is
      static FUNCTION GetClientProcessor(iClientId varchar2) RETURN T_Base_Processor IS
    BEGIN
      return    case
            when upper(iClientId) = 'ADMINISTRATOR' then
                new T_Another_Processor(null)
            else
                new T_Base_Processor(null)
            end;
    END;
      member FUNCTION SpecificValidation (iValue T_Child) RETURN NUMBER IS 
    BEGIN 
      -- some specific validation is done here, not important for the example 
      dbms_output.put_line('T_Base_Processor.SpecificValidation');
      RETURN NULL; 
    END; 
      member PROCEDURE ValidateIt (iValue T_Child) IS 
      lResult NUMBER; 
    BEGIN 
      -- No more need for dynamic SQL, instead rely on dynamic dispatch
      lResult := SpecificValidation(iValue);
    END; 
      member PROCEDURE Process (iValue T_Base) IS 
    BEGIN 
      -- in fact we know that iValue must be of typ T_Child, it is checked using IS OF ( ) operator and exception is raised if this check fails 
      -- This does not work for some reason. 
      -- It fails in EXECUTE IMMEDIATE with PLS-00306. I don't really get why, because ValidateIt accepts a value of type T_Child and it passes it to the validation procedure, which also expects value of type T_Child. 
      ValidateIt(TREAT(iValue AS T_Child)); 
    END; 
      member PROCEDURE Process2 (iValue T_Base) IS 
      lChild  T_Child; 
    BEGIN 
      -- The only difference here is that result of TREAT is saved to a variable. 
      -- This works as expected. 
      lChild := TREAT(iValue AS T_Child); 
      ValidateIt(lChild); 
    END;
    end;
    create or replace type body T_Another_Processor
    is
      overriding member FUNCTION SpecificValidation (iValue T_Child) RETURN NUMBER
    is
    begin
      -- some other specific validation is done here, not important for the example 
      -- You could even call the overridden method as well using
      --   treat(self as T_Base_Processor).SpecificValidation(iValue)
      dbms_output.put_line('T_Another_Processor.SpecificValidation');
      RETURN NULL; 
    end;
    end;
    And again with slight modifications, your test block:
    DECLARE 
      lProcessor T_Base_Processor := T_Base_Processor.getClientProcessor('JOE');
      lItem T_Base := T_Child(5, 2); 
    BEGIN 
      BEGIN 
        -- This call no longer throws a PLS-00306 error. 
        lProcessor.Process(lItem); 
        dbms_output.put_line('Process completed successfully.'); 
      EXCEPTION WHEN OTHERS THEN 
        dbms_output.put_line('Exception when calling Process.'); 
        dbms_output.put_line(SQLERRM); 
        dbms_output.put_line(DBMS_UTILITY.FORMAT_ERROR_BACKTRACE); 
      END; 
      -- Demonstrate dynamic dispatch by choosing a different processor
      lProcessor := T_Base_Processor.getClientProcessor('ADMINISTRATOR');
      BEGIN 
        lProcessor.Process2(lItem); 
        dbms_output.put_line('Process2 completed successfully.'); 
      EXCEPTION WHEN OTHERS THEN 
        dbms_output.put_line('Exception when calling Process2.'); 
        dbms_output.put_line(SQLERRM); 
        dbms_output.put_line(DBMS_UTILITY.FORMAT_ERROR_BACKTRACE); 
      END; 
    END; 
    T_Base_Processor.SpecificValidation
    Process completed successfully.
    T_Another_Processor.SpecificValidation
    Process2 completed successfully.
    Gerard

  • Error while using execute immediate

    Hi,
    I am trying to get the record count of a table. The table name is saved in a variable..
    when i am writing the code like below its working fine.
    SELECT count(*) into count1 FROM emp1;
    DBMS_OUTPUT.PUT_LINE(count1);
    but when i am using the code for the table name in variable its giving error
    execute immediate 'SELECT count(*) into count1 FROM ' || t_name;
    DBMS_OUTPUT.PUT_LINE(count1);
    the error is
    ERROR at line 1:
    ORA-00905: missing keyword
    ORA-06512: at "SYSTEM.TEST_COL", line 14
    ORA-06512: at line 1
    any help
    Ashish

    Interesting, the into count doesn't be a problem, but the count variable usage does :
    SQL> set serveroutput on
    SQL> l
      1  declare
      2     count number;
      3     t_name varchar2(30):='all_objects';
      4  begin
      5     execute immediate 'select count(*) from ' || t_name into count;
      6  exception when others then dbms_output.put_line(sqlcode||' : '||sqlerrm);
      7* end;
    SQL> /
    PL/SQL procedure successfully completed.
    SQL> declare
      2     count number;
      3     t_name varchar2(30):='all_objects';
      4  begin
      5     execute immediate 'select count(*) from ' || t_name into count;
      6     dbms_output.put_line(count);
      7  exception when others then dbms_output.put_line(sqlcode||' : '||sqlerrm);
      8* end;
    SQL> /
       dbms_output.put_line(count);
    ERROR at line 6:
    ORA-06550: line 6, column 25:
    PLS-00204: function or pseudo-column 'COUNT' may be used inside a SQL statement
    only
    ORA-06550: line 6, column 4:
    PL/SQL: Statement ignoredNicolas.

  • Using where clause with hardcode value in execute immediate

    Dear Experts, I am using below in stored procedure getting exception,
    EXECUTE IMMEDIATE 'DELETE FROM CC.TB WHERE COL='HG'';
    where col is varchar2(30) in CC.TB
    Please guide how can i use above statement in stored procedure
    Thanks,

    DBA wrote:
    Dear Experts, I am using below in stored procedure getting exception,
    EXECUTE IMMEDIATE 'DELETE FROM CC.TB WHERE COL='HG'';
    where col is varchar2(30) in CC.TB
    Please guide how can i use above statement in stored procedure
    Thanks,Why are you using Dynamic SQL? DELETE statement is a DML statement and its valid inside a PL/SQL block.
    So you can remove the execute immediate and write your DELETE statement directly.
    begin
      delete from cc.tb where col = 'HG';
    end;

  • BULK SELECT EXECUTE IMMEDIATE

    I want to update 3 lakhs record in EXP__REQUEST_SK table
    How to use bulk select "execute immedaite" in PLSQL
    Update EXP__Request_sk set R_CUSTOMERNAME = cust_name where BFG_CUSTOMERID=cust_id;

    Note: this code is not tested.
    create or replace procedure generic_update (
      tab_name  varchar2,             -- table to update
      field_to_update  varchar2,     -- column to update
      field_value  varchar2,             -- new column value
      id_field_name  varchar2,        -- id column name
      id_value number)                 -- id value to identify the record
    as
      --local variables section
      stmt varchar2(4000) := '';
    begin
      stmt := 'update ' || tab_name || ' set ' || field_to_update || ' = :f_value where '
                 || id_field_name || ' = :i_value';
      savepoint txn1;
      execute immediate stmt using field_value, id_value;
      execute immediate ('commit');
      dbms_output.put_line('Update is done.');
    exception
       when others then
          rollback to txn1;
          dbms_output.put_line('Update has been rolled back.');
    end;
    /Even though I provided this, static SQL is always faster than PL/SQL because there is no context switch.
    An alternative to the above is to write all static SQLs into a script and run it.
    However, if you don't know which tables and column to update before hand, and the update depends on user inputs (e.g. from a JSP), then Java can call a stored procedure to perform the update.
    Edited by: pl/sql novice on Nov 20, 2008 11:24 PM

  • EXECUTE IMMEDIATE problem with long SQL statement

    Hello Experts,
    I am having a BIG problem executing script inside the iSQLPlus. This script has 29 blocks. 27 of those blocks are working OK, but block #26 and #27 are giving me the error on the "EXECUTE IMMEDIATE" statement. The length of the SQL statements in those two blocks is more then 4000 characters and I can not use a string variable to keep the SQL statement. If I pass the entire SQL statement as a string to the "EXECUTE IMMEDIATE" command, I am getting the error inside the iSQLPlus:
    Error writing 26 Bad Value. -907: ORA-00907: missing right parenthesis
    Error writing 27 Bad Value. -907: ORA-00907: missing right parenthesis
    The script code is shown below:
    SET ECHO OFF;
    SET VERIFY OFF;
    SET PAGESIZE 78;
    SET LINESIZE 132;
    SET SERVEROUTPUT ON;
    SET FEEDBACK OFF;
    --PROMPT;
    --PROMPT REPORT BEING PROCESSED - PLEASE WAIT.
    --PROMPT;
    DECLARE
    l_count NUMBER;
    s_user VARCHAR2(50);
    s_command VARCHAR2(4000);
    CURSOR INREC (BATCH_PARAM NUMBER) IS
    SELECT BATCH,
    AK$DEALER,
    FK$TRIP_TICKET,
    INVOICE,
    CONTINUATION_IND,
    TRIP_DATE,
    SPL_NO,
    AK$MRIS_AREA,
    AK$MRIS_COUNTY,
    TIME_FISHED,
    TIME_UNITS,
    DEPTH,
    DEPTH_UNITS
    FROM T$TRIP_TICKET_WORK
    WHERE TO_NUMBER(BATCH) = BATCH_PARAM;
    DATEST DATE;
    BEGDATE DATE;
    ENDATE DATE;
    FLAGCNT NUMBER := 0;
    MSGNUM NUMBER;
    MAXLIC VARCHAR2(7);
    BEGIN
    select sys_context('USERENV','SESSION_USER') into s_user from dual;
    select count(*) into l_count from all_tables where table_name = 'BATCHERS_REPORT' and owner=s_user;
    --the table 'BATCHERS_REPORT' alwase exist for the MRIS user role,co we have to check if more then 1 record exist:
    IF l_count > 0 then
         --TRUNCATE TABLE BATCHERS_REPORT REUSE STORAGE;
         s_command := 'TRUNCATE TABLE BATCHERS_REPORT REUSE STORAGE';
         execute immediate s_command;
    ELSE
         --CREATE TABLE BATCHERS_REPORT AS (SELECT * FROM MRIS.BATCHERS_REPORT);
         --s_command := 'CREATE TABLE BATCHERS_REPORT AS SELECT * FROM MRIS.BATCHERS_REPORT WHERE 1=2';
    s_command := 'CREATE TABLE BATCHERS_REPORT
    (BATCH VARCHAR2(6),
    AK$DEALER VARCHAR2(9),
    FK$TRIP_TICKET NUMBER,
    INVOICE     VARCHAR2(13),
    CONTINUATION_IND VARCHAR2(1),
    TRIP_DATE     VARCHAR2(8),
    SPL_NO          VARCHAR2(9),
    AK$MRIS_AREA VARCHAR2(7),
    AK$MRIS_COUNTY VARCHAR2(3),
    TIME_FISHED VARCHAR2(3),
    TIME_UNITS VARCHAR2(1),
    DEPTH VARCHAR2(5),
    DEPTH_UNITS VARCHAR2(1),
    AK$MRIS_GEAR VARCHAR2(4),
    AK$SPECIES VARCHAR2(4),
    SPECIES_SIZE VARCHAR2(8),
    WEIGHT_IN_POUNDS NUMBER(10,2),
    UNIT_PRICE NUMBER(5,3),
    ERROR_NUM NUMBER)';
         execute immediate s_command;
         execute immediate 'commit';          
    END IF;
    DBMS_OUTPUT.PUT_LINE('.');
    DBMS_OUTPUT.PUT_LINE('. PROCEDURE NAME = BATCHERS');
    DBMS_OUTPUT.PUT_LINE('. STARTING TIME = '||TO_CHAR(SYSDATE,'MM/DD/YYYY HH:MI:SS'));
    SELECT MAX(DATE_B), MAX(DATE_E)
    INTO BEGDATE, ENDATE
    FROM T$BATCH_HEADER
    WHERE PK$BATCH = &BATCHNUM;
    SELECT LPAD(MAX(LIC_NUM),7,'0') INTO MAXLIC
    FROM T$SWP_LICENSE;
    BEGIN
    MSGNUM := 1;
    s_command := 'INSERT INTO BATCHERS_REPORT
    (BATCH, AK$DEALER, FK$TRIP_TICKET, INVOICE,
    CONTINUATION_IND, TRIP_DATE, SPL_NO, AK$MRIS_AREA,
    AK$MRIS_COUNTY, TIME_FISHED, TIME_UNITS, DEPTH, DEPTH_UNITS,
    AK$SPECIES, SPECIES_SIZE, WEIGHT_IN_POUNDS, UNIT_PRICE,
    AK$MRIS_GEAR, ERROR_NUM)
    SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
    T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
    T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS,
    S.AK$SPECIES, LTRIM(S.SPECIES_SIZE),
    TO_NUMBER(S.WEIGHT_IN_POUNDS), TO_NUMBER(S.UNIT_PRICE),
    G.AK$MRIS_GEAR, '||''''||MSGNUM||''''||'
    FROM T$TRIP_TICKET_WORK T,
    T$TRIP_TICKET_GEAR_WORK G,
    T$TRIP_TICKET_SPECIES_WORK S
    WHERE (TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||') AND (T.FK$TRIP_TICKET = G.AK$TRIP_TICKET)
    AND T.FK$TRIP_TICKET = S.AK$TRIP_TICKET
    AND (G.AK$MRIS_GEAR IS NULL
    OR G.AK$MRIS_GEAR NOT IN (SELECT TO_CHAR(PK$MRIS_GEAR) FROM MT$MRIS_GEAR))
    UNION
    SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
    T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
    T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS,
    S.AK$SPECIES, LTRIM(S.SPECIES_SIZE),
    TO_NUMBER(S.WEIGHT_IN_POUNDS), TO_NUMBER(S.UNIT_PRICE),
    G.AK$MRIS_GEAR, '||''''||MSGNUM||''''||'
    FROM T$TRIP_TICKET_WORK T,
    T$TRIP_TICKET_GEAR_WORK G,
    T$TRIP_TICKET_SPECIES_WORK S
    WHERE (TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||')
    AND (T.FK$TRIP_TICKET = G.AK$TRIP_TICKET)
    AND T.FK$TRIP_TICKET = S.AK$TRIP_TICKET
    AND (G.AK$MRIS_GEAR IN (110, 120, 130)
    AND NOT EXISTS (SELECT * FROM T$TRIP_TICKET_GEAR_WORK G2
    WHERE G2.AK$TRIP_TICKET = G.AK$TRIP_TICKET
    AND G2.AK$MRIS_GEAR = 40))';
    execute immediate s_command;
    FLAGCNT := FLAGCNT + SQL%ROWCOUNT;
    --COMMIT;
    execute immediate 'commit';
    EXCEPTION WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('. Error writing '||MSGNUM||' Bad Value');
    END;
    BEGIN
    MSGNUM := 2;
    s_command := 'INSERT INTO BATCHERS_REPORT
    (BATCH, AK$DEALER, FK$TRIP_TICKET, INVOICE,
    CONTINUATION_IND, TRIP_DATE, SPL_NO, AK$MRIS_AREA,
    AK$MRIS_COUNTY, TIME_FISHED, TIME_UNITS, DEPTH, DEPTH_UNITS,
    AK$MRIS_GEAR,
    ERROR_NUM)
    SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
    T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
    T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS,
    NULL,
    '||''''||MSGNUM||''''||'
    FROM T$TRIP_TICKET_WORK T
    WHERE (TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||')
    AND (T.AK$MRIS_AREA != '||'''0'''||')
    AND (T.AK$MRIS_AREA NOT IN (SELECT TO_CHAR(PK$MRIS_AREA) FROM MT$MRIS_AREA))
    AND NOT (T.AK$DEALER IN ('||'''WD0004606'''||', '||'''WD0003877'''||', '||'''WD0000157'''||', '||'''WD0001326'''||', '||'''WD0000426'''||')
    AND
    T.AK$MRIS_AREA IN ('||'''161.2'''||', '||'''301.2'''||', '||'''720.2'''||', '||'''760.2'''||', '||'''771.2'''||', '||'''772.2'''||', '||'''773.2'''||', '||'''780.2'''||', '||'''800.1'''||', '||'''821.2'''||', '||'''882.2'''||'))
    UNION
    SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
    T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
    T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS,
    G.AK$MRIS_GEAR,
    '||''''||MSGNUM||''''||'
    FROM T$TRIP_TICKET_WORK T,
    T$TRIP_TICKET_GEAR_WORK G
    WHERE ((TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||'))
    AND ((T.FK$TRIP_TICKET = G.AK$TRIP_TICKET))
    AND ((INSTR(T.AK$MRIS_AREA,'||'''.'''||') = 0) OR
    (INSTR(T.AK$MRIS_AREA,'||'''.'''||') > 0 AND T.AK$MRIS_AREA NOT LIKE '||'''%.9%'''||'))
    AND ((G.AK$MRIS_GEAR IN ('||'''30'''||', '||'''6750'''||', '||'''6760'''||') OR
    G.AK$MRIS_GEAR = '||'''70'''||' OR
    G.AK$MRIS_GEAR BETWEEN '||'''4700'''||' AND '||'''4780'''||' or
    g.ak$mris_gear = '||'''80'''||' or
    g.ak$mris_gear between '||'''5300'''||' and '||'''5360'''||'))';
    execute immediate s_command;
    FLAGCNT := FLAGCNT + SQL%ROWCOUNT;
    --COMMIT;
    execute immediate 'commit';
    EXCEPTION WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('. Error writing '||MSGNUM||' Bad Value');
    END;
    -- Error number 3 not in use - Logic moved to ctyarflg.sql
    BEGIN
    MSGNUM := 4;
    s_command := 'INSERT INTO BATCHERS_REPORT
    (BATCH, AK$DEALER, FK$TRIP_TICKET, INVOICE,
    CONTINUATION_IND, TRIP_DATE, SPL_NO, AK$MRIS_AREA,
    AK$MRIS_COUNTY, TIME_FISHED, TIME_UNITS, DEPTH, DEPTH_UNITS,
    ERROR_NUM)
    SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
    T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
    T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS, '||''''||MSGNUM||''''||'
    FROM T$TRIP_TICKET_WORK T
    WHERE (TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||')
    AND (T.SPL_NO IS NULL
    OR NOT EXISTS (SELECT * FROM T$SWP_LICENSE L
    WHERE L.AK$LICENSE_TYPE = '||'''SP'''||'
    AND L.LIC_NUM = SUBSTR(T.SPL_NO,3,7)))';
    execute immediate s_command;
    FLAGCNT := FLAGCNT + SQL%ROWCOUNT;
    --COMMIT;
    execute immediate 'commit';
    EXCEPTION
    WHEN INVALID_NUMBER THEN
    s_command := 'INSERT INTO BATCHERS_REPORT
    (BATCH, AK$DEALER, FK$TRIP_TICKET, INVOICE,
    CONTINUATION_IND, TRIP_DATE, SPL_NO, AK$MRIS_AREA,
    AK$MRIS_COUNTY, TIME_FISHED, TIME_UNITS, DEPTH, DEPTH_UNITS,
    ERROR_NUM)
    SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
    T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
    T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS, '||''''||MSGNUM||''''||'
    FROM T$TRIP_TICKET_WORK T
    WHERE (TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||')
    AND (T.SPL_NO = '||''' '''||'
    OR T.SPL_NO IS NULL
    OR SUBSTR(T.SPL_NO,3,7) NOT BETWEEN '||'''0000000'''||' AND '||'''9999999'''||'
    OR LPAD(RTRIM(LTRIM(SUBSTR(T.SPL_NO,3,7))),7,'||'''0'''||') > '|| MAXLIC ||')';
    execute immediate s_command;
    FLAGCNT := FLAGCNT + SQL%ROWCOUNT;
    --COMMIT;
    execute immediate 'commit';
    WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('. Error writing '||MSGNUM||' Bad Value');
    END;
    BEGIN
    MSGNUM := 5;
    s_command := 'INSERT INTO BATCHERS_REPORT
    (BATCH, AK$DEALER, FK$TRIP_TICKET, INVOICE,
    CONTINUATION_IND, TRIP_DATE, SPL_NO, AK$MRIS_AREA,
    AK$MRIS_COUNTY, TIME_FISHED, TIME_UNITS, DEPTH, DEPTH_UNITS,
    AK$SPECIES, SPECIES_SIZE, WEIGHT_IN_POUNDS, UNIT_PRICE,
    ERROR_NUM)
    SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
    T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
    T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS,
    S.AK$SPECIES, LTRIM(S.SPECIES_SIZE),
    TO_NUMBER(S.WEIGHT_IN_POUNDS), TO_NUMBER(S.UNIT_PRICE),
    '||''''||MSGNUM||''''||'
    FROM T$TRIP_TICKET_WORK T,
    T$TRIP_TICKET_SPECIES_WORK S
    WHERE TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||'
    AND T.FK$TRIP_TICKET = S.AK$TRIP_TICKET
    AND S.WEIGHT_IN_POUNDS < 1';
    execute immediate s_command;
    FLAGCNT := FLAGCNT + SQL%ROWCOUNT;
    --COMMIT;
    execute immediate 'commit';
    EXCEPTION WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('. Error writing '||MSGNUM||' Bad Value');
    END;
    BEGIN
    MSGNUM := 6;
    s_command := 'INSERT INTO BATCHERS_REPORT
    (BATCH, AK$DEALER, FK$TRIP_TICKET, INVOICE,
    CONTINUATION_IND, TRIP_DATE, SPL_NO, AK$MRIS_AREA,
    AK$MRIS_COUNTY, TIME_FISHED, TIME_UNITS, DEPTH, DEPTH_UNITS,
    ERROR_NUM)
    SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
    T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
    T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS,
    '||''''||MSGNUM||''''||'
    FROM T$TRIP_TICKET_WORK T
    WHERE ((TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||'))
    AND ((T.TIME_UNITS = '||'''D'''||' AND T.TIME_FISHED < 1) OR
    (T.TIME_UNITS = '||'''N'''||'))';
    execute immediate s_command;
    FLAGCNT := FLAGCNT + SQL%ROWCOUNT;
    --COMMIT;
    execute immediate 'commit';
    EXCEPTION WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('. Error writing '||MSGNUM||' Bad Value');
    END;
    BEGIN
    MSGNUM := 7;
    s_command := 'INSERT INTO BATCHERS_REPORT
    (BATCH, AK$DEALER, FK$TRIP_TICKET, INVOICE,
    CONTINUATION_IND, TRIP_DATE, SPL_NO, AK$MRIS_AREA,
    AK$MRIS_COUNTY, TIME_FISHED, TIME_UNITS, DEPTH, DEPTH_UNITS,
    AK$SPECIES, SPECIES_SIZE, WEIGHT_IN_POUNDS, UNIT_PRICE,
    ERROR_NUM)
    SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
    T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
    T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS,
    S.AK$SPECIES, LTRIM(S.SPECIES_SIZE),
    TO_NUMBER(S.WEIGHT_IN_POUNDS), TO_NUMBER(S.UNIT_PRICE),
    '||''''||MSGNUM||''''||'
    FROM T$TRIP_TICKET_WORK T,
    T$TRIP_TICKET_SPECIES_WORK S
    WHERE (TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||')
    AND (T.FK$TRIP_TICKET = S.AK$TRIP_TICKET)
    AND (S.WEIGHT_IN_POUNDS > 5500)
    AND (S.AK$SPECIES BETWEEN 131 AND 150 OR
    S.AK$SPECIES BETWEEN 203 AND 217)';
    execute immediate s_command;
    FLAGCNT := FLAGCNT + SQL%ROWCOUNT;
    --COMMIT;
    execute immediate 'commit';
    EXCEPTION WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('. Error writing '||MSGNUM||' Bad Value');
    END;
    BEGIN
    MSGNUM := 8;
    s_command := 'INSERT INTO BATCHERS_REPORT
    (BATCH, AK$DEALER, FK$TRIP_TICKET, INVOICE,
    CONTINUATION_IND, TRIP_DATE, SPL_NO, AK$MRIS_AREA,
    AK$MRIS_COUNTY, TIME_FISHED, TIME_UNITS, DEPTH, DEPTH_UNITS,
    AK$SPECIES, SPECIES_SIZE, WEIGHT_IN_POUNDS, UNIT_PRICE,
    ERROR_NUM)
    SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
    T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
    T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS,
    S.AK$SPECIES, LTRIM(S.SPECIES_SIZE),
    TO_NUMBER(S.WEIGHT_IN_POUNDS), TO_NUMBER(S.UNIT_PRICE),
    '||''''||MSGNUM||''''||'
    FROM T$TRIP_TICKET_WORK T,
    T$TRIP_TICKET_SPECIES_WORK S
    WHERE ((TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||'))
    AND ((T.FK$TRIP_TICKET = S.AK$TRIP_TICKET))
    AND ((S.AK$SPECIES in (135, 163, 185, 223, 227, 315, 316, 490, 494, 795, 805)) OR
    (S.AK$SPECIES BETWEEN 169 AND 171) OR
    (S.AK$SPECIES IN (263, 265, 310, 311, 312)) OR
    (((S.AK$SPECIES BETWEEN 812 AND 825) OR (S.AK$SPECIES = 255)) AND S.AK$TRIP_TICKET IN (SELECT AK$TRIP_TICKET
    FROM T$TRIP_TICKET_GEAR_WORK
    WHERE AK$MRIS_GEAR != 9955)))';
    execute immediate s_command;
    FLAGCNT := FLAGCNT + SQL%ROWCOUNT;
    --COMMIT;
    execute immediate 'commit';
    EXCEPTION WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('. Error writing '||MSGNUM||' Bad Value');
    END;
    BEGIN
    MSGNUM := 9;
    s_command := 'INSERT INTO BATCHERS_REPORT
    (BATCH, AK$DEALER, FK$TRIP_TICKET, INVOICE,
    CONTINUATION_IND, TRIP_DATE, SPL_NO, AK$MRIS_AREA,
    AK$MRIS_COUNTY, TIME_FISHED, TIME_UNITS, DEPTH, DEPTH_UNITS,
    AK$SPECIES, SPECIES_SIZE, WEIGHT_IN_POUNDS, UNIT_PRICE,
    ERROR_NUM)
    SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
    T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
    T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS,
    S.AK$SPECIES, LTRIM(S.SPECIES_SIZE),
    TO_NUMBER(S.WEIGHT_IN_POUNDS), TO_NUMBER(S.UNIT_PRICE),
    '||''''||MSGNUM||''''||'
    FROM T$TRIP_TICKET_WORK T,
    T$TRIP_TICKET_SPECIES_WORK S
    WHERE (TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||')
    AND (T.FK$TRIP_TICKET = S.AK$TRIP_TICKET)
    AND (S.AK$SPECIES = 0
    OR S.AK$SPECIES IS NULL
    OR S.AK$SPECIES NOT IN (SELECT TO_CHAR(PK$SPECIES)
    FROM MT$SPECIES))';
    execute immediate s_command;
    FLAGCNT := FLAGCNT + SQL%ROWCOUNT;
    --COMMIT;
    execute immediate 'commit';
    EXCEPTION WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('. Error writing '||MSGNUM||' Bad Value');
    END;
    BEGIN
    MSGNUM := 10;
    s_command := 'INSERT INTO BATCHERS_REPORT
    (BATCH, AK$DEALER, FK$TRIP_TICKET, INVOICE,
    CONTINUATION_IND, TRIP_DATE, SPL_NO, AK$MRIS_AREA,
    AK$MRIS_COUNTY, TIME_FISHED, TIME_UNITS, DEPTH, DEPTH_UNITS,
    AK$SPECIES, SPECIES_SIZE, WEIGHT_IN_POUNDS, UNIT_PRICE,
    ERROR_NUM)
    SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
    T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
    T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS,
    S.AK$SPECIES, LTRIM(S.SPECIES_SIZE),
    TO_NUMBER(S.WEIGHT_IN_POUNDS), TO_NUMBER(S.UNIT_PRICE),
    '||''''||MSGNUM||''''||'
    FROM T$TRIP_TICKET_WORK T,
    T$TRIP_TICKET_SPECIES_WORK S
    WHERE ((TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||'))
    AND ((T.FK$TRIP_TICKET = S.AK$TRIP_TICKET))
    AND ((S.AK$SPECIES = 401 AND T.AK$DEALER != '||'''WD000573'''||') OR
    (S.AK$SPECIES = 405 AND T.AK$MRIS_COUNTY != 26) OR
    (S.AK$SPECIES in (187, 239, 307, 324, 341, 342, 363, 365,
    367, 383, 387, 427, 450, 457, 461)))';
    execute immediate s_command;
    FLAGCNT := FLAGCNT + SQL%ROWCOUNT;
    --COMMIT;
    execute immediate 'commit';
    EXCEPTION WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('. Error writing '||MSGNUM||' Bad Value');
    END;
    BEGIN
    MSGNUM := 11;
    s_command := 'INSERT INTO BATCHERS_REPORT
    (BATCH, AK$DEALER, FK$TRIP_TICKET, INVOICE,
    CONTINUATION_IND, TRIP_DATE, SPL_NO, AK$MRIS_AREA,
    AK$MRIS_COUNTY, TIME_FISHED, TIME_UNITS, DEPTH, DEPTH_UNITS,
    AK$SPECIES, SPECIES_SIZE, WEIGHT_IN_POUNDS, UNIT_PRICE,
    ERROR_NUM)
    SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
    T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
    T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS,
    S.AK$SPECIES, LTRIM(S.SPECIES_SIZE),
    TO_NUMBER(S.WEIGHT_IN_POUNDS), TO_NUMBER(S.UNIT_PRICE),
    '||''''||MSGNUM||''''||'
    FROM T$TRIP_TICKET_WORK T,
    T$TRIP_TICKET_SPECIES_WORK S
    WHERE TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||'
    AND T.FK$TRIP_TICKET = S.AK$TRIP_TICKET
    AND S.AK$SPECIES = 251 AND (S.WEIGHT_IN_POUNDS > 49 OR S.UNIT_PRICE > .99)';
    execute immediate s_command;
    FLAGCNT := FLAGCNT + SQL%ROWCOUNT;
    --COMMIT;
    execute immediate 'commit';
    EXCEPTION WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('. Error writing '||MSGNUM||' Bad Value');
    END;
    BEGIN
    MSGNUM := 12;
    s_command := 'INSERT INTO BATCHERS_REPORT
    (BATCH, AK$DEALER, FK$TRIP_TICKET, INVOICE,
    CONTINUATION_IND, TRIP_DATE, SPL_NO, AK$MRIS_AREA,
    AK$MRIS_COUNTY, TIME_FISHED, TIME_UNITS, DEPTH, DEPTH_UNITS,
    AK$SPECIES, SPECIES_SIZE, WEIGHT_IN_POUNDS, UNIT_PRICE,
    ERROR_NUM)
    SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
    T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
    T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS,
    S.AK$SPECIES, LTRIM(S.SPECIES_SIZE),
    TO_NUMBER(S.WEIGHT_IN_POUNDS), TO_NUMBER(S.UNIT_PRICE),
    '||''''||MSGNUM||''''||'
    FROM T$TRIP_TICKET_WORK T,
    T$TRIP_TICKET_SPECIES_WORK S
    WHERE (TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||')
    AND (T.FK$TRIP_TICKET = S.AK$TRIP_TICKET)
    AND (S.WEIGHT_IN_POUNDS > 50)
    AND (S.AK$SPECIES BETWEEN 149 AND 150 OR
    S.AK$SPECIES BETWEEN 217 AND 218)';
    execute immediate s_command;
    FLAGCNT := FLAGCNT + SQL%ROWCOUNT;
    --COMMIT;
    execute immediate 'commit';
    EXCEPTION WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('. Error writing '||MSGNUM||' Bad Value');
    END;
    BEGIN
    MSGNUM := 13;
    s_command := 'INSERT INTO BATCHERS_REPORT
    (BATCH, AK$DEALER, FK$TRIP_TICKET, INVOICE,
    CONTINUATION_IND, TRIP_DATE, SPL_NO, AK$MRIS_AREA,
    AK$MRIS_COUNTY, TIME_FISHED, TIME_UNITS, DEPTH, DEPTH_UNITS,
    AK$SPECIES, SPECIES_SIZE, WEIGHT_IN_POUNDS, UNIT_PRICE,
    ERROR_NUM)
    SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
    T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
    T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS,
    S.AK$SPECIES, LTRIM(S.SPECIES_SIZE),
    TO_NUMBER(S.WEIGHT_IN_POUNDS), TO_NUMBER(S.UNIT_PRICE),
    '||''''||MSGNUM||''''||'
    FROM T$TRIP_TICKET_WORK T,
    T$TRIP_TICKET_SPECIES_WORK S
    WHERE TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||'
    AND T.FK$TRIP_TICKET = S.AK$TRIP_TICKET
    AND S.WEIGHT_IN_POUNDS > 1000
    AND S.AK$SPECIES IN (175, 176, 178)';
    execute immediate s_command;
    FLAGCNT := FLAGCNT + SQL%ROWCOUNT;
    --COMMIT;
    execute immediate 'commit';
    EXCEPTION WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('. Error writing '||MSGNUM||' Bad Value');
    END;
    BEGIN
    MSGNUM := 14;
    s_command := 'INSERT INTO BATCHERS_REPORT
    (BATCH, AK$DEALER, FK$TRIP_TICKET, INVOICE,
    CONTINUATION_IND, TRIP_DATE, SPL_NO, AK$MRIS_AREA,
    AK$MRIS_COUNTY, TIME_FISHED, TIME_UNITS, DEPTH, DEPTH_UNITS,
    AK$SPECIES, SPECIES_SIZE, WEIGHT_IN_POUNDS, UNIT_PRICE,
    ERROR_NUM)
    SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
    T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
    T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS,
    S.AK$SPECIES, LTRIM(S.SPECIES_SIZE),
    TO_NUMBER(S.WEIGHT_IN_POUNDS), TO_NUMBER(S.UNIT_PRICE),
    '||''''||MSGNUM||''''||'
    FROM T$TRIP_TICKET_WORK T,
    T$TRIP_TICKET_SPECIES_WORK S
    WHERE ((TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||'))
    AND ((T.FK$TRIP_TICKET = S.AK$TRIP_TICKET))
    AND ((S.AK$SPECIES = 302 AND S.UNIT_PRICE >= 4.00) OR
    (S.AK$SPECIES = 303 AND (S.UNIT_PRICE > 0 AND S.UNIT_PRICE < 4.00)))';
    execute immediate s_command;
    FLAGCNT := FLAGCNT + SQL%ROWCOUNT;
    --COMMIT;
    execute immediate 'commit';
    EXCEPTION WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('. Error writing '||MSGNUM||' Bad Value');
    END;
    BEGIN
    MSGNUM := 15;
    s_command := 'INSERT INTO BATCHERS_REPORT
    (BATCH, AK$DEALER, FK$TRIP_TICKET, INVOICE,
    CONTINUATION_IND, TRIP_DATE, SPL_NO, AK$MRIS_AREA,
    AK$MRIS_COUNTY, TIME_FISHED, TIME_UNITS, DEPTH, DEPTH_UNITS,
    AK$SPECIES, SPECIES_SIZE, WEIGHT_IN_POUNDS, UNIT_PRICE,
    ERROR_NUM)
    SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
    T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
    T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS,
    S.AK$SPECIES, LTRIM(S.SPECIES_SIZE),
    TO_NUMBER(S.WEIGHT_IN_POUNDS), TO_NUMBER(S.UNIT_PRICE),
    '||''''||MSGNUM||''''||'
    FROM T$TRIP_TICKET_WORK T,
    T$TRIP_TICKET_SPECIES_WORK S
    WHERE TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||'
    AND T.FK$TRIP_TICKET = S.AK$TRIP_TICKET
    AND S.AK$SPECIES = 345
    AND S.UNIT_PRICE > .06';
    execute immediate s_command;
    FLAGCNT := FLAGCNT + SQL%ROWCOUNT;
    --COMMIT;
    execute immediate 'commit';
    EXCEPTION WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('. Error writing '||MSGNUM||' Bad Value');
    END;
    BEGIN
    MSGNUM := 16;
    s_command := 'INSERT INTO BATCHERS_REPORT
    (BATCH, AK$DEALER, FK$TRIP_TICKET, INVOICE,
    CONTINUATION_IND, TRIP_DATE, SPL_NO, AK$MRIS_AREA,
    AK$MRIS_COUNTY, TIME_FISHED, TIME_UNITS, DEPTH, DEPTH_UNITS,
    AK$SPECIES, SPECIES_SIZE, WEIGHT_IN_POUNDS, UNIT_PRICE,
    ERROR_NUM)
    SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
    T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
    T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS,
    S.AK$SPECIES, LTRIM(S.SPECIES_SIZE),
    TO_NUMBER(S.WEIGHT_IN_POUNDS), TO_NUMBER(S.UNIT_PRICE),
    '||''''||MSGNUM||''''||'
    FROM T$TRIP_TICKET_WORK T,
    T$TRIP_TICKET_SPECIES_WORK S
    WHERE ((TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||'))
    AND ((T.FK$TRIP_TICKET = S.AK$TRIP_TICKET))
    AND ((LTRIM(S.SPECIES_SIZE) IS NOT NULL))
    AND ((S.AK$SPECIES = 325 AND RTRIM(ltrim(S.SPECIES_SIZE,'||''' '''||'),'||''' '''||') != '||'''J'''||') OR
    (S.AK$SPECIES = 327 AND RTRIM(ltrim(S.SPECIES_SIZE,'||''' '''||'),'||''' '''||') != '||'''L'''||') OR
    (S.AK$SPECIES = 329 AND RTRIM(ltrim(S.SPECIES_SIZE,'||''' '''||'),'||''' '''||') != '||'''M'''||') OR
    (S.AK$SPECIES = 331 AND RTRIM(ltrim(S.SPECIES_SIZE,'||''' '''||'),'||''' '''||') != '||'''S'''||') OR
    (S.AK$SPECIES = 332 AND RTRIM(ltrim(S.SPECIES_SIZE,'||''' '''||'),'||''' '''||') != '||'''LT'''||'))
    UNION
    SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
    T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
    T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS,
    S.AK$SPECIES, LTRIM(S.SPECIES_SIZE),
    TO_NUMBER(S.WEIGHT_IN_POUNDS), TO_NUMBER(S.UNIT_PRICE),
    '||''''||MSGNUM||''''||'
    FROM T$TRIP_TICKET_WORK T,
    T$TRIP_TICKET_SPECIES_WORK S
    WHERE (TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||')
    AND (T.FK$TRIP_TICKET = S.AK$TRIP_TICKET)
    AND (S.AK$SPECIES IN (325, 327, 329, 331, 332))
    AND (S.UNIT_PRICE BETWEEN .01 AND 1.50)
    AND NOT (S.AK$SPECIES = 332 AND RTRIM(LTRIM(S.SPECIES_SIZE,'||''' '''||'),'||''' '''||') = '||'''LT'''||')
    UNION
    SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
    T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
    T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS,
    S.AK$SPECIES, LTRIM(S.SPECIES_SIZE),
    TO_NUMBER(S.WEIGHT_IN_POUNDS), TO_NUMBER(S.UNIT_PRICE),
    '||''''||MSGNUM||''''||'
    FROM T$TRIP_TICKET_WORK T,
    T$TRIP_TICKET_SPECIES_WORK S
    WHERE (TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||')
    AND (T.FK$TRIP_TICKET = S.AK$TRIP_TICKET)
    AND (S.UNIT_PRICE < .01 AND S.AK$SPECIES = 332)
    AND (RTRIM(LTRIM(SPECIES_SIZE,'||''' '''||'),'||''' '''||') != '||'''LT'''||' or species_size is null)';
    execute immediate s_command;
    FLAGCNT := FLAGCNT + SQL%ROWCOUNT;
    --COMMIT;
    execute immediate 'commit';
    EXCEPTION WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('. Error writing '||MSGNUM||' Bad Value');
    END;
    BEGIN
    MSGNUM := 17;
    s_command := 'INSERT INTO BATCHERS_REPORT
    (BATCH, AK$DEALER, FK$TRIP_TICKET, INVOICE,
    CONTINUATION_IND, TRIP_DATE, SPL_NO, AK$MRIS_AREA,
    AK$MRIS_COUNTY, TIME_FISHED, TIME_UNITS, DEPTH, DEPTH_UNITS,
    AK$SPECIES, SPECIES_SIZE, WEIGHT_IN_POUNDS, UNIT_PRICE,
    ERROR_NUM)
    SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
    T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
    T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS,
    S.AK$SPECIES, LTRIM(S.SPECIES_SIZE),
    TO_NUMBER(S.WEIGHT_IN_POUNDS), TO_NUMBER(S.UNIT_PRICE),
    '||''''||MSGNUM||''''||'
    FROM T$TRIP_TICKET_WORK T,
    T$TRIP_TICKET_SPECIES_WORK S
    WHERE (TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||')
    AND (T.FK$TRIP_TICKET = S.AK$TRIP_TICKET)
    AND (S.AK$SPECIES = 103 OR
    S.AK$SPECIES BETWEEN 414 AND 416 OR
    S.AK$SPECIES BETWEEN 471 AND 474)
    AND (SUBSTR(T.TRIP_DATE,5,2) BETWEEN '||'''03'''||' AND '||'''05'''||')
    AND (ROUND(TO_NUMBER(T.AK$MRIS_AREA) * 10, 1) NOT IN
    (19, 29, 39, 49, 59, 69, 79, 89, 99, 109, 119,
    7179, 7229, 7289, 7329, 7369, 7419, 7449, 7489))';
    execute immediate s_command;
    FLAGCNT := FLAGCNT + SQL%ROWCOUNT;
    --COMMIT;
    execute immediate 'commit';
    EXCEPTION WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('. Error writing '||MSGNUM||' Bad Value');
    END;
    BEGIN
    MSGNUM := 18;
    s_command := 'INSERT INTO BATCHERS_REPORT
    (BATCH, AK$DEALER, FK$TRIP_TICKET, INVOICE,
    CONTINUATION_IND, TRIP_DATE, SPL_NO, AK$MRIS_AREA,
    AK$MRIS_COUNTY, TIME_FISHED, TIME_UNITS, DEPTH, DEPTH_UNITS,
    AK$SPECIES, SPECIES_SIZE, WEIGHT_IN_POUNDS, UNIT_PRICE,
    ERROR_NUM)
    SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
    T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
    T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS,
    S.AK$SPECIES, LTRIM(S.SPECIES_SIZE),
    TO_NUMBER(S.WEIGHT_IN_POUNDS), TO_NUMBER(S.UNIT_PRICE),
    '||''''||MSGNUM||''''||'
    FROM T$TRIP_TICKET_WORK T,
    T$TRIP_TICKET_SPECIES_WORK S
    WHERE (TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||')
    AND (T.FK$TRIP_TICKET = S.AK$TRIP_TICKET)
    AND (S.WEIGHT_IN_POUNDS > 50)
    AND (S.AK$SPECIES = 103)
    and substr(t.trip_date,5,2) = '||'''04'''||'
    AND (ROUND(TO_NUMBER(T.AK$MRIS_AREA) * 10, 1) IN
    (19, 7179, 7229, 7289, 7329, 7369, 7419, 7449, 7489))';
    execute immediate s_command;
    FLAGCNT := FLAGCNT + SQL%ROWCOUNT;
    --COMMIT;
    execute immediate 'commit';
    EXCEPTION WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('. Error writing '||MSGNUM||' Bad Value');
    END;
    BEGIN
    MSGNUM := 19;
    s_command := 'INSERT INTO BATCHERS_REPORT
    (BATCH, AK$DEALER, FK$TRIP_TICKET, INVOICE,
    CONTINUATION_IND, TRIP_DATE, SPL_NO, AK$MRIS_AREA,
    AK$MRIS_COUNTY, TIME_FISHED, TIME_UNITS, DEPTH, DEPTH_UNITS,
    AK$SPECIES, SPECIES_SIZE, WEIGHT_IN_POUNDS, UNIT_PRICE,
    ERROR_NUM)
    SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
    T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
    T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS,
    S.AK$SPECIES, LTRIM(S.SPECIES_SIZE),
    TO_NUMBER(S.WEIGHT_IN_POUNDS), TO_NUMBER(S.UNIT_PRICE),
    '||''''||MSGNUM||''''||'
    FROM T$TRIP_TICKET_WORK T,
    T$TRIP_TICKET_SPECIES_WORK S
    WHERE TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||'
    AND T.FK$TRIP_TICKET = S.AK$TRIP_TICKET
    AND S.AK$SPECIES BETWEEN 325 AND 332
    AND SUBSTR(T.TRIP_DATE,5,4) BETWEEN '||'''0516'''||' AND '||'''1014'''||'
    UNION
    SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
    T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
    T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS,
    S.AK$SPECIES, LTRIM(S.SPECIES_SIZE),
    TO_NUMBER(S.WEIGHT_IN_POUNDS), TO_NUMBER(S.UNIT_PRICE),
    '||''''||MSGNUM||''''||'
    FROM T$TRIP_TICKET_WORK T,
    T$TRIP_TICKET_SPECIES_WORK S
    WHERE TO_NUMBER(T.BATCH) = &BATCHNUM
    AND T.FK$TRIP_TICKET = S.AK$TRIP_TICKET
    AND S.AK$SPECIES BETWEEN 317 AND 318
    AND SUBSTR(T.TRIP_DATE,5,4) BETWEEN '||'''0401'''||' AND '||'''0805'''||'';
    execute immediate s_command;
    FLAGCNT := FLAGCNT + SQL%ROWCOUNT;
    --COMMIT;
    execute immediate 'commit';
    EXCEPTION WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('. Error writing '||MSGNUM||' Bad Value');
    END;
    BEGIN
    MSGNUM := 20;
    s_command := 'INSERT INTO BATCHERS_REPORT
    (BATCH, AK$DEALER, FK$TRIP_TICKET, INVOICE,
    CONTINUATION_IND, TRIP_DATE, SPL_NO, AK$MRIS_AREA,
    AK$MRIS_COUNTY, TIME_FISHED, TIME_UNITS, DEPTH, DEPTH_UNITS,
    AK$SPECIES, SPECIES_SIZE, WEIGHT_IN_POUNDS, UNIT_PRICE,
    ERROR_NUM)
    SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
    T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
    T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS,
    S.AK$SPECIES, LTRIM(S.SPECIES_SIZE),
    TO_NUMBER(S.WEIGHT_IN_POUNDS), TO_NUMBER(S.UNIT_PRICE),
    '||''''||MSGNUM||''''||'
    FROM T$TRIP_TICKET_WORK T,
    T$TRIP_TICKET_SPECIES_WORK S
    WHERE TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||'
    AND T.FK$TRIP_TICKET = S.AK$TRIP_TICKET
    AND S.AK$SPECIES = 141
    AND S.WEIGHT_IN_POUNDS > 300
    AND T.TRIP_DATE BETWEEN '||'''19971220'''||' AND '||'''19971231'''||'';
    execute immediate s_command;
    FLAGCNT := FLAGCNT + SQL%ROWCOUNT;
    --COMMIT;
    execute immediate 'commit';
    EXCEPTION WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('. Error writing '||MSGNUM||' Bad Value');
    END;
    BEGIN
    MSGNUM := 21;
    s_command := 'INSERT INTO BATCHERS_REPORT
    (BATCH, AK$DEALER, FK$TRIP_TICKET, INVOICE,
    CONTINUATION_IND, TRIP_DATE, SPL_NO, AK$MRIS_AREA,
    AK$MRIS_COUNTY, TIME_FISHED, TIME_UNITS, DEPTH, DEPTH_UNITS,
    AK$SPECIES, SPECIES_SIZE, WEIGHT_IN_POUNDS, UNIT_PRICE,
    ERROR_NUM)
    SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
    T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
    T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS,
    S.AK$SPECIES, LTRIM(S.SPECIES_SIZE),
    TO_NUMBER(S.WEIGHT_IN_POUNDS), TO_NUMBER(S.UNIT_PRICE),
    '||''''||MSGNUM||''''||'
    FROM T$TRIP_TICKET_WORK T,
    T$TRIP_TICKET_SPECIES_WORK S
    WHERE ((TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||'))
    AND ((T.FK$TRIP_TICKET = S.AK$TRIP_TICKET))
    AND ((S.AK$SPECIES = 209))
    AND ((T.AK$MRIS_AREA BETWEEN 0 AND 11))
    AND ((T.TRIP_DATE BETWEEN '||'''19981016'''||' AND '||'''19990131'''||') OR
    (T.TRIP_DATE BETWEEN '||'''19990315'''||' AND '||'''19990401'''||') OR
    (T.TRIP_DATE BETWEEN '||'''19990415'''||' AND '||'''19990901'''||'))';
    execute immediate s_command;
    FLAGCNT := FLAGCNT + SQL%ROWCOUNT;
    --COMMIT;
    execute immediate 'commit';
    EXCEPTION WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('. Error writing '||MSGNUM||' Bad Value');
    END;
    BEGIN
    MSGNUM := 22;
    s_command := 'INSERT INTO BATCHERS_REPORT
    (BATCH, AK$DEALER, FK$TRIP_TICKET, INVOICE,
    CONTINUATION_IND, TRIP_DATE, SPL_NO, AK$MRIS_AREA,
    AK$MRIS_COUNTY, TIME_FISHED, TIME_UNITS, DEPTH, DEPTH_UNITS,
    AK$SPECIES, SPECIES_SIZE, WEIGHT_IN_POUNDS, UNIT_PRICE,
    ERROR_NUM)
    SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
    T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
    T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS,
    S.AK$SPECIES, LTRIM(S.SPECIES_SIZE),
    TO_NUMBER(S.WEIGHT_IN_POUNDS), TO_NUMBER(S.UNIT_PRICE),
    '||''''||MSGNUM||''''||'
    FROM T$TRIP_TICKET_WORK T,
    T$TRIP_TICKET_SPECIES_WORK S
    WHERE TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||'
    AND T.FK$TRIP_TICKET = S.AK$TRIP_TICKET
    AND S.AK$SPECIES = 193
    AND S.WEIGHT_IN_POUNDS > 250
    and substr(t.trip_date,1,4) > '||'''1996'''||'';
    -- AND TO_NUMBER(TO_CHAR(TO_DATE(T.TRIP_DATE,'YYYYMMDD'),'YY')) >= 96;
    execute immediate s_command;
    FLAGCNT := FLAGCNT + SQL%ROWCOUNT;
    --COMMIT;
    execute immediate 'commit';
    EXCEPTION WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('. Error writing '||MSGNUM||' Bad Value');
    END;
    BEGIN
    MSGNUM := 23;
    s_command := 'INSERT INTO BATCHERS_REPORT
    (BATCH, AK$DEALER, FK$TRIP_TICKET, INVOICE,
    CONTINUATION_IND, TRIP_DATE, SPL_NO, AK$MRIS_AREA,
    AK$MRIS_COUNTY, TIME_FISHED, TIME_UNITS, DEPTH, DEPTH_UNITS,
    AK$SPECIES, SPECIES_SIZE, WEIGHT_IN_POUNDS, UNIT_PRICE,
    ERROR_NUM)
    SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
    T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
    T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS,
    S.AK$SPECIES, LTRIM(S.SPECIES_SIZE),
    TO_NUMBER(S.WEIGHT_IN_POUNDS), TO_NUMBER(S.UNIT_PRICE),
    '||''''||MSGNUM||''''||'
    FROM T$TRIP_TICKET_WORK T,
    T$TRIP_TICKET_SPECIES_WORK S
    WHERE (TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||')
    AND (T.FK$TRIP_TICKET = S.AK$TRIP_TICKET)
    AND (S.AK$SPECIES = 193)
    AND NOT (SUBSTR(T.TRIP_DATE,5,2) BETWEEN '||'''06'''||' AND '||'''08'''||')';
    execute immediate s_command;
    FLAGCNT := FLAGCNT + SQL%ROWCOUNT;
    --COMMIT;
    execute immediate 'commit';
    EXCEPTION WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('. Error writing '||MSGNUM||' Bad Value');
    END;
    BEGIN
    MSGNUM := 24;
    s_command := 'INSERT INTO BATCHERS_REPORT
    (BATCH, AK$DEALER, FK$TRIP_TICKET, INVOICE,
    CONTINUATION_IND, TRIP_DATE, SPL_NO, AK$MRIS_AREA,
    AK$MRIS_COUNTY, TIME_FISHED, TIME_UNITS, DEPTH, DEPTH_UNITS,
    AK$SPECIES, SPECIES_SIZE, WEIGHT_IN_POUNDS, UNIT_PRICE,
    ERROR_NUM)
    SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
    T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
    T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS,
    S.AK$SPECIES, LTRIM(S.SPECIES_SIZE),
    TO_NUMBER(S.WEIGHT_IN_POUNDS), TO_NUMBER(S.UNIT_PRICE),
    '||''''||MSGNUM||''''||'
    FROM T$TRIP_TICKET_WORK T,
    T$TRIP_TICKET_SPECIES_WORK S
    WHERE ((TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||'))
    AND ((T.FK$TRIP_TICKET = S.AK$TRIP_TICKET))
    AND ((S.AK$SPECIES = 458 AND S.WEIGHT_IN_POUNDS > 50) OR
    (S.AK$SPECIES = 449 AND S.WEIGHT_IN_POUNDS > 30) OR
    (S.AK$SPECIES = 113 AND S.WEIGHT_IN_POUNDS > 50))
    and substr(t.trip_date,1,4) >= '||'''1996'''||'';
    -- AND ((TO_NUMBER(TO_CHAR(TO_DATE(T.TRIP_DATE,'||'''YYYYMMDD'''||'),'||'''YY'''||')) >= 96))';
    execute immediate s_command;
    FLAGCNT := FLAGCNT + SQL%ROWCOUNT;
    --COMMIT;
    execute immediate 'commit';
    EXCEPTION WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('. Error writing '||MSGNUM||' Bad Value');
    END;
    BEGIN
    MSGNUM := 25;
    s_command := 'INSERT INTO BATCHERS_REPORT
    (BATCH, AK$DEALER, FK$TRIP_TICKET, INVOICE,
    CONTINUATION_IND, TRIP_DATE, SPL_NO, AK$MRIS_AREA,
    AK$MRIS_COUNTY, TIME_FISHED, TIME_UNITS, DEPTH, DEPTH_UNITS,
    AK$MRIS_GEAR,
    ERROR_NUM)
    SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
    T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
    T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS,
    G.AK$MRIS_GEAR,
    '||''''||MSGNUM||''''||'
    FROM T$TRIP_TICKET_WORK T,
    T$TRIP_TICKET_GEAR_WORK G
    WHERE ((TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||'))
    AND ((T.FK$TRIP_TICKET = G.AK$TRIP_TICKET))
    AND ((G.AK$MRIS_GEAR IN (30, 70, 80)) OR
    (G.AK$MRIS_GEAR BETWEEN 4700 AND 4790) OR
    (G.AK$MRIS_GEAR BETWEEN 5300 AND 5390) OR
    (G.AK$MRIS_GEAR BETWEEN 6700 AND 6790))
    AND ((TO_NUMBER(T.AK$MRIS_AREA) - ROUND(TO_NUMBER(T.AK$MRIS_AREA)) NOT BETWEEN .85 AND .95))
    AND ((ROUND(TO_NUMBER(T.AK$MRIS_AREA)) <= 0))';
    execute immediate s_command;
    FLAGCNT := FLAGCNT + SQL%ROWCOUNT;
    --COMMIT;
    execute immediate 'commit';
    EXCEPTION WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('. Error writing '||MSGNUM||' Bad Value');
    END;
    BEGIN
    MSGNUM := 26;
    execute immediate 'INSERT INTO BATCHERS_REPORT
    (BATCH, AK$DEALER, FK$TRIP_TICKET, INVOICE,
    CONTINUATION_IND, TRIP_DATE, SPL_NO, AK$MRIS_AREA,
    AK$MRIS_COUNTY, TIME_FISHED, TIME_UNITS, DEPTH, DEPTH_UNITS,
    AK$MRIS_GEAR,AK$SPECIES, SPECIES_SIZE, WEIGHT_IN_POUNDS, UNIT_PRICE,
    ERROR_NUM)
    SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
    T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
    T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS,
    NULL, S.AK$SPECIES, LTRIM(S.SPECIES_SIZE),
    TO_NUMBER(S.WEIGHT_IN_POUNDS), TO_NUMBER(S.UNIT_PRICE),
    '||''''||MSGNUM||''''||'
    FROM T$TRIP_TICKET_WORK T,
    T$TRIP_TICKET_SPECIES_WORK S
    WHERE TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||'
    AND T.FK$TRIP_TICKET = S.AK$TRIP_TICKET
    AND SUBSTR(T.TRIP_DATE,5,2) BETWEEN '||'''04'''||' AND '||'''10'''||'
    AND S.AK$SPECIES = 165
    AND S.WEIGHT_IN_POUNDS > 3500
    AND T.AK$MRIS_COUNTY IN ('||'''26'''||', '||'''28'''||', '||'''55'''||', '||'''65'''||', '||'''74'''||')
    UNION
    SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
    T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
    T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS,
    NULL,S.AK$SPECIES, LTRIM(S.SPECIES_SIZE),
    TO_NUMBER(S.WEIGHT_IN_POUNDS), TO_NUMBER(S.UNIT_PRICE),
    '||''''||MSGNUM||''''||'
    FROM T$TRIP_TICKET_WORK T,
    T$TRIP_TICKET_SPECIES_WORK S
    WHERE TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||'
    AND T.FK$TRIP_TICKET = S.AK$TRIP_TICKET
    AND SUBSTR(T.TRIP_DATE,5,2) BETWEEN '||'''04'''||' AND '||'''10'''||'
    AND S.AK$SPECIES = 165
    AND S.WEIGHT_IN_POUNDS > 500
    AND T.AK$MRIS_COUNTY IN ('||'''15'''||', '||'''16'''||', '||'''23'''||', '||'''41'''||', '||'''53'''||', '||'''60'''||', '||'''66'''||')
    UNION
    SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
    T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
    T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS,
    NULL, S.AK$SPECIES, LTRIM(S.SPECIES_SIZE),
    TO_NUMBER(S.WEIGHT_IN_POUNDS), TO_NUMBER(S.UNIT_PRICE),
    '||''''||MSGNUM||''''||'
    FROM T$TRIP_TICKET_WORK T,
    T$TRIP_TICKET_SPECIES_WORK S
    WHERE (TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||'
    AND (T.FK$TRIP_TICKET = S.AK$TRIP_TICKET)
    AND (SUBSTR(T.TRIP_DATE,5,2) BETWEEN '||'''04'''||' AND '||'''10'''||')
    AND (S.AK$SPECIES = 165)
    AND ((S.WEIGHT_IN_POUNDS > 1250 AND T.AK$MRIS_COUNTY = '||'''54'''||')
    OR (T.AK$MRIS_AREA > 700 AND S.WEIGHT_IN_POUNDS > 500
    AND T.AK$MRIS_COUNTY != '||'''54'''||'))
    UNION
    SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
    T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
    T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS,
    G.AK$MRIS_GEAR, S.AK$SPECIES, LTRIM(S.SPECIES_SIZE),
    TO_NUMBER(S.WEIGHT_IN_POUNDS), TO_NUMBER(S.UNIT_PRICE),
    '||''''||MSGNUM||''''||'
    FROM T$TRIP_TICKET_WORK T,
    T$TRIP_TICKET_SPECIES_WORK S,
    T$TRIP_TICKET_GEAR_WORK G
    WHERE (TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||')
    AND (T.FK$TRIP_TICKET = S.AK$TRIP_TICKET)
    AND (T.FK$TRIP_TICKET = G.AK$TRIP_TICKET)
    and (substr(t.trip_date,5,2) in ('||'''01'''||','||'''02'''||','||'''03'''||','||'''11'''||','||'''12'''||'))
    and (S.AK$SPECIES = 165)
    AND (S.WEIGHT_IN_POUNDS > 0)
    AND (T.TRIP_DATE BETWEEN '||'''19990331'''||' AND '||'''19990701'''||')
    AND (T.AK$MRIS_COUNTY NOT IN ('||'''15'''||','||'''16'''||','||'''23'''||','||'''26'''||','||'''28'''||','||'''41'''||','||'''53'''||','||'''54'''||','||'''55'''||','||'''60'''||','||'''65'''||','||'''66'''||','||'''74'''||')
    AND ((G.AK$MRIS_GEAR IN (70, 80)) OR
    (G.AK$MRIS_GEAR BETWEEN 4700 AND 4900) OR
    (G.AK$MRIS_GEAR BETWEEN 5300 AND 5390)))
    UNION
    SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
    T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
    T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS,
    G.AK$MRIS_GEAR, S.AK$SPECIES, LTRIM(S.SPECIES_SIZE),
    TO_NUMBER(S.WEIGHT_IN_POUNDS), TO_NUMBER(S.UNIT_PRICE),
    '||''''||MSGNUM||''''||'
    FROM T$TRIP_TICKET_WORK T,
    T$TRIP_TICKET_SPECIES_WORK S,
    T$TRIP_TICKET_GEAR_WORK G
    WHERE (TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||')
    AND (T.FK$TRIP_TICKET = S.AK$TRIP_TICKET)
    AND (T.FK$TRIP_TICKET = G.AK$TRIP_TICKET)
    and (substr(t.trip_date,5,2) in ('||'''01'''||','||'''02'''||','||'''03'''||','||'''11'''||','||'''12'''||'))
    and (S.AK$SPECIES = 165)
    AND (S.WEIGHT_IN_POUNDS > 500)
    AND (T.TRIP_DATE > '||'''19990130'''||')
    AND (T.AK$MRIS_COUNTY NOT IN ('||'''15'''||','||'''16'''||','||'''23'''||','||'''26'''||','||'''28'''||','||'''41'''||','||'''53'''||','||'''54'''||','||'''55'''||','||'''60'''||','||'''65'''||','||'''66'''||','||'''74'''||'))
    AND ((G.AK$MRIS_GEAR = 40) OR
    G.AK$MRIS_GEAR BETWEEN 6100 AND 6190)';
    --execute immediate s_command;
    FLAGCNT := FLAGCNT + SQL%ROWCOUNT;
    --COMMIT;
    execute immediate 'commit';
    EXCEPTION WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('. Error writing '||MSGNUM||' Bad Value'||'. '||SQLCODE||': '||SQLERRM);
    END;
    BEGIN
    MSGNUM := 27;
    execute immediate 'INSERT INTO BATCHERS_REPORT
    (BATCH, AK$DEALER, FK$TRIP_TICKET, INVOICE,
    CONTINUATION_IND, TRIP_DATE, SPL_NO, AK$MRIS_AREA,
    AK$MRIS_COUNTY, TIME_FISHED, TIME_UNITS, DEPTH, DEPTH_UNITS,
    AK$MRIS_GEAR, AK$SPECIES, SPECIES_SIZE, WEIGHT_IN_POUNDS, UNIT_PRICE,
    ERROR_NUM)
    SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
    T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
    T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS,
    NULL, S.AK$SPECIES, LTRIM(S.SPECIES_SIZE),
    TO_NUMBER(S.WEIGHT_IN_POUNDS), TO_NUMBER(S.UNIT_PRICE),
    '||''''||MSGNUM||''''||'
    FROM T$TRIP_TICKET_WORK T,
    T$TRIP_TICKET_SPECIES_WORK S
    WHERE TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||'
    AND T.FK$TRIP_TICKET = S.AK$TRIP_TICKET
    AND S.AK$SPECIES = 165
    AND S.WEIGHT_IN_POUNDS > 500
    AND T.AK$MRIS_COUNTY IN (15, 16, 23, 41, 53, 54, 55, 60, 66, 74)
    AND SUBSTR(T.TRIP_DATE,5,2) IN ('||'''01'''||', '||'''02'''||', '||'''03'''||', '||'''11'''||', '||'''12'''||')
    UNION
    SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
    T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
    T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS,
    G.AK$MRIS_GEAR, S.AK$SPECIES, LTRIM(S.SPECIES_SIZE),
    TO_NUMBER(S.WEIGHT_IN_POUNDS), TO_NUMBER(S.UNIT_PRICE),
    '||''''||MSGNUM||''''||'
    FROM T$TRIP_TICKET_WORK T,
    T$TRIP_TICKET_SPECIES_WORK S,
    T$TRIP_TICKET_GEAR_WORK G
    WHERE (TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||')
    AND (T.FK$TRIP_TICKET = S.AK$TRIP_TICKET)
    AND (T.FK$TRIP_TICKET = G.AK$TRIP_TICKET)
    AND (S.AK$SPECIES = 165)
    AND (S.WEIGHT_IN_POUNDS > 1250)
    AND (T.TRIP_DATE > '||'''19990130'''||')
    AND (T.AK$MRIS_COUNTY in ( 15, 16, 23, 26, 28, 41, 53, 54, 55, 60, 65, 66, 74))
    AND (G.AK$MRIS_GEAR = 40 OR G.AK$MRIS_GEAR BETWEEN 6100 AND 6190)
    AND (SUBSTR(T.TRIP_DATE,5,2) IN ('||'''01'''||', '||'''02'''||', '||'''03'''||', '||'''11'''||', '||'''12'''||'))
    UNION
    SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
    T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
    T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS,
    G.AK$MRIS_GEAR, S.AK$SPECIES, LTRIM(S.SPECIES_SIZE),
    TO_NUMBER(S.WEIGHT_IN_POUNDS), TO_NUMBER(S.UNIT_PRICE),
    '||''''||MSGNUM||''''||'
    FROM T$TRIP_TICKET_WORK T,
    T$TRIP_TICKET_SPECIES_WORK S,
    T$TRIP_TICKET_GEAR_WORK G
    WHERE (TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||')
    AND (T.FK$TRIP_TICKET = S.AK$TRIP_TICKET)
    AND (T.FK$TRIP_TICKET = G.AK$TRIP_TICKET)
    AND (S.AK$SPECIES = 165)
    AND (S.WEIGHT_IN_POUNDS > 25000)
    AND (T.TRIP_DATE > '||'''19990119'''||')
    AND (T.AK$MRIS_COUNTY in ( 15, 16, 23, 26, 28, 41, 53, 54, 55, 60, 65, 66, 74))
    AND (G.AK$MRIS_GEAR IN (70, 80) OR
    G.AK$MRIS_GEAR BETWEEN 4700 AND 4790 OR
    G.AK$MRIS_GEAR BETWEEN 5300 AND 5390)
    AND (SUBSTR(T.TRIP_DATE,5,2) IN ('||'''01'''||', '||'''02'''||', '||'''03'''||', '||'''11'''||', '||'''12'''||'))
    UNION
    SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
    T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
    T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS,
    G.AK$MRIS_GEAR, S.AK$SPECIES, LTRIM(S.SPECIES_SIZE),
    TO_NUMBER(S.WEIGHT_IN_POUNDS), TO_NUMBER(S.UNIT_PRICE),
    '||''''||MSGNUM||''''||'
    FROM T$TRIP_TICKET_WORK T,
    T$TRIP_TICKET_SPECIES_WORK S,
    T$TRIP_TICKET_GEAR_WORK G
    WHERE (TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||')
    AND (T.FK$TRIP_TICKET = S.AK$TRIP_TICKET)
    AND (T.FK$TRIP_TICKET = G.AK$TRIP_TICKET)
    AND (S.AK$SPECIES = 165)
    AND (S.WEIGHT_IN_POUNDS > 500)
    AND (T.TRIP_DATE > '||'''19990103'''||')
    AND (T.AK$MRIS_COUNTY in ( 15, 16, 23, 26, 28, 41, 53, 54, 55, 60, 65, 66, 74))
    AND (G.AK$MRIS_GEAR = 40 OR G.AK$MRIS_GEAR BETWEEN 6100 AND 6190)
    AND (SUBSTR(T.TRIP_DATE,5,2) IN ('||'''01'''||', '||'''02'''||', '||'''03'''||', '||'''11'''||', '||'''12'''||'))
    UNION
    SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
    T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
    T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS,
    G.AK$MRIS_GEAR, S.AK$SPECIES, LTRIM(S.SPECIES_SIZE),
    TO_NUMBER(S.WEIGHT_IN_POUNDS), TO_NUMBER(S.UNIT_PRICE),
    '||''''||MSGNUM||''''||'
    FROM T$TRIP_TICKET_WORK T,
    T$TRIP_TICKET_SPECIES_WORK S,
    T$TRIP_TICKET_GEAR_WORK G
    WHERE (TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||')
    AND (T.FK$TRIP_TICKET = S.AK$TRIP_TICKET)
    AND (T.FK$TRIP_TICKET = G.AK$TRIP_TICKET)
    AND (S.AK$SPECIES = 165)
    AND (S.WEIGHT_IN_POUNDS > 0)
    AND (T.TRIP_DATE > '||'''19990119'''||')
    AND (T.AK$MRIS_COUNTY in ( 15, 16, 23, 26, 28, 41, 53, 54, 55, 60, 65, 66, 74))
    AND (G.AK$MRIS_GEAR IN (70, 80) OR
    G.AK$MRIS_GEAR BETWEEN 4700 AND 4790 OR
    G.AK$MRIS_GEAR BETWEEN 5300 AND 5390)
    AND (SUBSTR(T.TRIP_DATE,5,2) IN ('||'''01'''||', '||'''02'''||', '||'''03'''||', '||'''11'''||', '||'''12'''||'))';
    -- execute immediate s_command;
    FLAGCNT := FLAGCNT + SQL%ROWCOUNT;
    --COMMIT;
    execute immediate 'commit';
    EXCEPTION WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('. Error writing '||MSGNUM||' Bad Value'||'. '||SQLCODE||': '||SQLERRM);
    END;
    BEGIN
    MSGNUM := 28;
    s_command := 'INSERT INTO BATCHERS_REPORT
    (BATCH, AK$DEALER, FK$TRIP_TICKET, INVOICE,
    CONTINUATION_IND, TRIP_DATE, SPL_NO, AK$MRIS_AREA,
    AK$MRIS_COUNTY, TIME_FISHED, TIME_UNITS, DEPTH, DEPTH_UNITS,
    AK$SPECIES, SPECIES_SIZE, WEIGHT_IN_POUNDS, UNIT_PRICE,
    ERROR_NUM)
    SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
    T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
    T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS,
    S.AK$SPECIES, LTRIM(S.SPECIES_SIZE),
    TO_NUMBER(S.WEIGHT_IN_POUNDS), TO_NUMBER(S.UNIT_PRICE),
    '||''''||MSGNUM||''''||'
    FROM T$TRIP_TICKET_WORK T,
    T$TRIP_TICKET_SPECIES_WORK S
    WHERE TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||'
    AND T.FK$TRIP_TICKET = S.AK$TRIP_TICKET
    AND T.AK$MRIS_AREA BETWEEN 0.0 AND 10.99
    AND SUBSTR(T.TRIP_DATE,5,2) IN ('||'''02'''||', '||'''03'''||', '||'''04'''||', '||'''09'''||', '||'''10'''||')
    AND S.AK$SPECIES = 209
    AND S.WEIGHT_IN_POUNDS > 2000';
    execute immediate s_command;
    FLAGCNT := FLAGCNT + SQL%ROWCOUNT;
    --COMMIT;
    execute immediate 'commit';
    EXCEPTION WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('. Error writing '||MSGNUM||' Bad Value');
    END;
    BEGIN
    MSGNUM := 29;
    s_command := 'INSERT INTO BATCHERS_REPORT
    (BATCH, AK$DEALER, FK$TRIP_TICKET, INVOICE,
    CONTINUATION_IND, TRIP_DATE, SPL_NO, AK$MRIS_AREA,
    AK$MRIS_COUNTY, TIME_FISHED, TIME_UNITS, DEPTH, DEPTH_UNITS,
    AK$MRIS_GEAR, AK$SPECIES, SPECIES_SIZE, WEIGHT_IN_POUNDS, UNIT_PRICE,
    ERROR_NUM)
    SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
    T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
    T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS,
    G.AK$MRIS_GEAR, S.AK$SPECIES, LTRIM(S.SPECIES_SIZE),
    TO_NUMBER(S.WEIGHT_IN_POUNDS), TO_NUMBER(S.UNIT_PRICE),
    '||''''||MSGNUM||''''||'
    FROM T$TRIP_TICKET_WORK T,
    T$TRIP_TICKET_SPECIES_WORK S,
    T$TRIP_TICKET_GEAR_WORK G
    WHERE TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||'
    AND T.FK$TRIP_TICKET = S.AK$TRIP_TICKET
    AND T.FK$TRIP_TICKET = G.AK$TRIP_TICKET
    AND S.AK$SPECIES IN (353, 355, 357, 359)
    AND T.AK$MRIS_COUNTY IN ('||'''23'''||', '||'''54'''||')
    AND G.AK$MRIS_GEAR != 9250
    UNION
    SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
    T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
    T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS,
    G.AK$MRIS_GEAR, S.AK$SPECIES, LTRIM(S.SPECIES_SIZE),
    TO_NUMBER(S.WEIGHT_IN_POUNDS), TO_NUMBER(S.UNIT_PRICE),
    '||''''||MSGNUM||''''||'
    FROM T$TRIP_TICKET_WORK T,
    T$TRIP_TICKET_SPECIES_WORK S,
    T$TRIP_TICKET_GEAR_WORK G
    WHERE TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||'
    AND T.FK$TRIP_TICKET = S.AK$TRIP_TICKET
    AND T.FK$TRIP_TICKET = G.AK$TRIP_TICKET
    AND S.AK$SPECIES IN (353, 355, 357, 359)
    AND G.AK$MRIS_GEAR NOT IN (9250, 9433)';
    execute immediate s_command;
    FLAGCNT := FLAGCNT + SQL%ROWCOUNT;
    --COMMIT;
    execute immediate 'commit';
    EXCEPTION WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('. Error writing '||MSGNUM||' Bad Value');
    END;
    FOR I IN INREC (&BATCHNUM) LOOP
    BEGIN
    IF I.TRIP_DATE IS NULL THEN
    s_command := 'INSERT INTO BATCHERS_REPORT
    (BATCH, AK$DEALER, FK$TRIP_TICKET, INVOICE,
    CONTINUATION_IND, TRIP_DATE, SPL_NO, AK$MRIS_AREA,
    AK$MRIS_COUNTY, TIME_FISHED, TIME_UNITS, DEPTH, DEPTH_UNITS,
    ERROR_NUM)
    VALUES(I.BATCH, I.AK$DEALER, I.FK$TRIP_TICKET, I.INVOICE,
    I.CONTINUATION_IND, I.TRIP_DATE, I.SPL_NO, I.AK$MRIS_AREA,
    I.AK$MRIS_COUNTY, I.TIME_FISHED, I.TIME_UNITS, I.DEPTH, I.DEPTH_UNITS,
    30)';     
    execute immediate s_command;
    FLAGCNT := FLAGCNT + SQL%ROWCOUNT;
    --COMMIT;
    execute immediate 'commit';
    ELSE
    DATEST := TO_DATE(I.TRIP_DATE,'YYYYMMDD');
    END IF;
    -- IF DATEST NOT BETWEEN BEGDATE AND ENDATE THEN
    IF datest not between add_months(endate,-6) and endate then
    s_command := 'INSERT INTO BATCHERS_REPORT
    (BATCH, AK$DEALER, FK$TRIP_TICKET, INVOICE,
    CONTINUATION_IND, TRIP_DATE, SPL_NO, AK$MRIS_AREA,
    AK$MRIS_COUNTY, TIME_FISHED, TIME_UNITS, DEPTH, DEPTH_UNITS,
    ERROR_NUM)
    VALUES(I.BATCH, I.AK$DEALER, I.FK$TRIP_TICKET, I.INVOICE,
    I.CONTINUATION_IND, I.TRIP_DATE, I.SPL_NO, I.AK$MRIS_AREA,
    I.AK$MRIS_COUNTY, I.TIME_FISHED, I.TIME_UNITS, I.DEPTH, I.DEPTH_UNITS,
    30)';     
    execute immediate s_command;
    FLAGCNT := FLAGCNT + SQL%ROWCOUNT;
    --COMMIT;
    execute immediate 'commit';
    END IF;
    EXCEPTION WHEN OTHERS THEN
    s_command := 'INSERT INTO BATCHERS_REPORT
    (BATCH, AK$DEALER, FK$TRIP_TICKET, INVOICE,
    CONTINUATION_IND, TRIP_DATE, SPL_NO, AK$MRIS_AREA,
    AK$MRIS_COUNTY, TIME_FISHED, TIME_UNITS, DEPTH, DEPTH_UNITS,
    ERROR_NUM)
    VALUES(I.BATCH, I.AK$DEALER, I.FK$TRIP_TICKET, I.INVOICE,
    I.CONTINUATION_IND, I.TRIP_DATE, I.SPL_NO, I.AK$MRIS_AREA,
    I.AK$MRIS_COUNTY, I.TIME_FISHED, I.TIME_UNITS, I.DEPTH, I.DEPTH_UNITS,
    30)';
    execute immediate s_command;
    FLAGCNT := FLAGCNT + SQL%ROWCOUNT;
    --COMMIT;
    execute immediate 'commit';
    END;
    END LOOP;
    DBMS_OUTPUT.PUT_LINE('. RECORDS WRITTEN = '||TO_CHAR(FLAGCNT));
    DBMS_OUTPUT.PUT_LINE('. ENDING TIME = '||TO_CHAR(SYSDATE,'MM/DD/YYYY HH:MI:SS'));
    DBMS_OUTPUT.PUT_LINE('.');
    END;
    --SET TERMOUT OFF;
    CLEAR BREAKS;
    BREAK ON BATCH ON AK$DEALER;
    CLEAR COLUMNS;
    --SPOOL BATCHERS.LST;
    --CLEAR COLUMNS;
    COLUMN BATCH NOPRINT;
    COLUMN AK$DEALER HEADING 'DEALER' FORMAT A9 JUSTIFY LEFT;
    COLUMN FK$TRIP_TICKET HEADING 'TTK#' FORMAT 9999999999;
    COLUMN INVOICE HEADING 'INVOICE' FORMAT A13 JUSTIFY LEFT;
    COLUMN CONTINUATION_IND HEADING 'CONT' FORMAT A4 JUSTIFY LEFT;
    COLUMN TRIP_DATE HEADING 'DATE' FORMAT A8 JUSTIFY LEFT;
    COLUMN SPL_NO HEADING 'SPL' FORMAT A9 JUSTIFY LEFT;
    COLUMN AK$MRIS_AREA HEADING 'AREA' FORMAT A7 JUSTIFY LEFT;
    COLUMN AK$MRIS_COUNTY HEADING 'CTY' FORMAT A3 JUSTIFY LEFT;
    COLUMN TIME_FISHED HEADING 'TIME' FORMAT A4 JUSTIFY LEFT;
    COLUMN TIME_UNITS HEADING 'UNIT' FORMAT A4 JUSTIFY LEFT;
    COLUMN DEPTH HEADING 'DEPTH' FORMAT A5 JUSTIFY LEFT;
    COLUMN DEPTH_UNITS HEADING 'UNIT' FORMAT A4 JUSTIFY LEFT;
    COLUMN AK$MRIS_GEAR HEADING 'GEAR' FORMAT A4 JUSTIFY LEFT;
    COLUMN AK$SPECIES HEADING 'SPEC' FORMAT A4 JUSTIFY LEFT;
    COLUMN SPECIES_SIZE HEADING 'SIZE' FORMAT A8 JUSTIFY LEFT;
    COLUMN WEIGHT_IN_POUNDS HEADING 'POUNDS' FORMAT 99999.99;
    COLUMN UNIT_PRICE HEADING 'PRICE' FORMAT 99999.999;
    COLUMN ERROR_NUM NOPRINT;
    --CLEAR BREAKS;
    --BREAK ON BATCH ON AK$DEALER;
    --SPOOL BATCHERS.LST;
    TTITLE LEFT 'Page: ' FORMAT 999 SQL.PNO RIGHT 'Batch: ' &BATCHNUM SKIP -
    CENTER 'Undefined gear codes.' SKIP 2;
    SELECT * FROM BATCHERS_REPORT
    WHERE ERROR_NUM = 1
    ORDER BY AK$DEALER, FK$TRIP_TICKET;
    TTITLE LEFT 'Page: ' FORMAT 999 SQL.PNO RIGHT 'Batch: ' &BATCHNUM SKIP -
    CENTER 'Undefined or non-Florida area codes.' SKIP 2;
    SELECT * FROM BATCHERS_REPORT
    WHERE ERROR_NUM = 2
    ORDER BY AK$DEALER, FK$TRIP_TICKET;
    -- Error number 3 not in use - Logic moved to ctyarflg.sql
    TTITLE LEFT 'Page: ' FORMAT 999 SQL.PNO RIGHT 'Batch: ' &BATCHNUM SKIP -
    CENTER 'Incorrect or no SPL information.' SKIP 2;
    SELECT * FROM BATCHERS_REPORT
    WHERE ERROR_NUM = 4
    ORDER BY AK$DEALER, FK$TRIP_TICKET;
    TTITLE LEFT 'Page: ' FORMAT 999 SQL.PNO RIGHT 'Batch: ' &BATCHNUM SKIP -
    CENTER 'Reported less than 1 pound weight.' SKIP 2;
    SELECT * FROM BATCHERS_REPORT
    WHERE ERROR_NUM = 5
    ORDER BY AK$DEALER, FK$TRIP_TICKET;
    TTITLE LEFT 'Page: ' FORMAT 999 SQL.PNO RIGHT 'Batch: ' &BATCHNUM SKIP -
    CENTER 'Bad time fished or time units.' SKIP 2;
    SELECT * FROM BATCHERS_REPORT
    WHERE ERROR_NUM = 6
    ORDER BY AK$DEALER, FK$TRIP_TICKET;
    TTITLE LEFT 'Page: ' FORMAT 999 SQL.PNO RIGHT 'Batch: ' &BATCHNUM SKIP -
    CENTER 'Weight over 5500 lbs for reef fish.' SKIP 2;
    SELECT * FROM BATCHERS_REPORT
    WHERE ERROR_NUM = 7
    ORDER BY AK$DEALER, FK$TRIP_TICKET;
    TTITLE LEFT 'Page: ' FORMAT 999 SQL.PNO RIGHT 'Batch: ' &BATCHNUM SKIP -
    CENTER 'Landings in closed fisheries.' SKIP 2;
    SELECT * FROM BATCHERS_REPORT
    WHERE ERROR_NUM = 8
    ORDER BY AK$DEALER, FK$TRIP_TICKET;
    TTITLE LEFT 'Page: ' FORMAT 999 SQL.PNO RIGHT 'Batch: ' &BATCHNUM SKIP -
    CENTER 'Invalid species codes.' SKIP 2;
    SELECT * FROM BATCHERS_REPORT
    WHERE ERROR_NUM = 9
    ORDER BY AK$DEALER, FK$TRIP_TICKET;
    TTITLE LEFT 'Page: ' FORMAT 999 SQL.PNO RIGHT 'Batch: ' &BATCHNUM SKIP -
    CENTER 'Unlikely or unusual species codes.' SKIP 2;
    SELECT * FROM BATCHERS_REPORT
    WHERE ERROR_NUM = 10
    ORDER BY AK$DEALER, FK$TRIP_TICKET;
    TTITLE LEFT 'Page: ' FORMAT 999 SQL.PNO RIGHT 'Batch: ' &BATCHNUM SKIP -
    CENTER 'Food fish > 50 lbs or too expensive.' SKIP 2;
    SELECT * FROM BATCHERS_REPORT
    WHERE ERROR_NUM = 11
    ORDER BY AK$DEALER, FK$TRIP_TICKET;
    TTITLE LEFT 'Page: ' FORMAT 999 SQL.PNO RIGHT 'Batch: ' &BATCHNUM SKIP -
    CENTER 'Mixed or other grouper or snapper > 50 lbs.' SKIP 2;
    SELECT * FROM BATCHERS_REPORT
    WHERE ERROR_NUM = 12
    ORDER BY AK$DEALER, FK$TRIP_TICKET;
    TTITLE LEFT 'Page: ' FORMAT 999 SQL.PNO RIGHT 'Batch: ' &BATCHNUM SKIP -
    CENTER 'Over 1000 lbs striped mullet.' SKIP 2;
    SELECT * FROM BATCHERS_REPORT
    WHERE ERROR_NUM = 13
    ORDER BY AK$DEALER, FK$TRIP_TICKET;
    TTITLE LEFT 'Page: ' FORMAT 999 SQL.PNO RIGHT 'Batch: ' &BATCHNUM SKIP -
    CENTER 'Oysters improperly coded.' SKIP 2;
    SELECT * FROM BATCHERS_REPORT
    WHERE ERROR_NUM = 14
    ORDER BY AK$DEALER, FK$TRIP_TICKET;
    TTITLE LEFT 'Page: ' FORMAT 999 SQL.PNO RIGHT 'Batch: ' &BATCHNUM SKIP -
    CENTER 'Too expensive bait shrimp.' SKIP 2;
    SELECT * FROM BATCHERS_REPORT
    WHERE ERROR_NUM = 15
    ORDER BY AK$DEALER, FK$TRIP_TICKET;
    TTITLE LEFT 'Page: ' FORMAT 999 SQL.PNO RIGHT 'Batch: ' &BATCHNUM SKIP -
    CENTER 'Bad stone crab sizes, prices or unidentified lites.' SKIP 2;
    SELECT * FROM BATCHERS_REPORT
    WHERE ERROR_NUM = 16
    ORDER BY AK$DEALER, FK$TRIP_TICKET;
    TTITLE LEFT 'Page: ' FORMAT 999 SQL.PNO RIGHT 'Batch: ' &BATCHNUM SKIP -
    CENTER 'Reported landings of greater amberjack,' SKIP -
    CENTER 'lesser amberjack, almaco jack and banded rudderfish ' SKIP -
    CENTER 'during the closed season (March-May) from state waters.' SKIP 2;
    SELECT * FROM BATCHERS_REPORT
    WHERE ERROR_NUM = 17
    ORDER BY AK$DEALER, FK$TRIP_TICKET;
    TTITLE LEFT 'Page: ' FORMAT 999 SQL.PNO RIGHT 'Batch: ' &BATCHNUM SKIP -
    CENTER 'Over the bag limit (1 fish) landings of' SKIP -
    CENTER 'greater amberjack during April from South Atlantic federal waters.' SKIP 2;
    SELECT * FROM BATCHERS_REPORT
    WHERE ERROR_NUM = 18
    ORDER BY AK$DEALER, FK$TRIP_TICKET;
    TTITLE LEFT 'Page: ' FORMAT 999 SQL.PNO RIGHT 'Batch: ' &BATCHNUM SKIP -
    CENTER 'Landings during closed seasons.' SKIP 2;
    SELECT * FROM BATCHERS_REPORT
    WHERE ERROR_NUM = 19
    ORDER BY AK$DEALER, FK$TRIP_TICKET;
    TTITLE LEFT 'Page: ' FORMAT 999 SQL.PNO RIGHT 'Batch: ' &BATCHNUM SKIP -
    CENTER 'Snowy grouper > 300 lbs (South Atlantic trip limit from Dec. 20 thru Dec. 31, 1997).' SKIP 2;
    SELECT * FROM BATCHERS_REPORT
    WHERE ERROR_NUM = 20
    ORDER BY AK$DEALER, FK$TRIP_TICKET;
    TTITLE LEFT 'Page: ' FORMAT 999 SQL.PNO RIGHT 'Batch: ' &BATCHNUM SKIP -
    CENTER 'Out-of-season Gulf red snapper landings. Commercial harvest closed' SKIP -
    CENTER 'Oct. 16, 1998 - Jan. 31 1999, Mar. 15 - Apr. 1, 1999, and' SKIP -
    CENTER 'Apr. 15 - Sep. 1, 1999.' SKIP 2;
    SELECT * FROM BATCHERS_REPORT
    WHERE ERROR_NUM = 21
    ORDER BY AK$DEALER, FK$TRIP_TICKET;
    TTITLE LEFT 'Page: ' FORMAT 999 SQL.PNO RIGHT 'Batch: ' &BATCHNUM SKIP -
    CENTER 'Too much spotted seatrout.' SKIP -
    CENTER 'Commercial harvest allows 75 fish daily vessel limit, flagged 250+ lbs.' SKIP 2;
    SELECT * FROM BATCHERS_REPORT
    WHERE ERROR_NUM = 22
    ORDER BY AK$DEALER, FK$TRIP_TICKET;
    TTITLE LEFT 'Page: ' FORMAT 999 SQL.PNO RIGHT 'Batch: ' &BATCHNUM SKIP -
    CENTER 'Out-of-season spotted seatrout. Commercial harvest allowed June, July, and August only.' SKIP 2;
    SELECT * FROM BATCHERS_REPORT
    WHERE ERROR_NUM = 23
    ORDER BY AK$DEALER, FK$TRIP_TICKET;
    TTITLE LEFT 'Page: ' FORMAT 999 SQL.PNO RIGHT 'Batch: ' &BATCHNUM SKIP -
    CENTER 'Too much tripletail, cobia, or african pompano.' SKIP 2;
    SELECT * FROM BATCHERS_REPORT
    WHERE ERROR_NUM = 24
    ORDER BY AK$DEALER, FK$TRIP_TICKET;
    TTITLE LEFT 'Page: ' FORMAT 999 SQL.PNO RIGHT 'Batch: ' &BATCHNUM SKIP -
    CENTER 'Undefined or non-Florida area fished for gear codes.' SKIP 2;
    SELECT * FROM BATCHERS_REPORT
    WHERE ERROR_NUM = 25
    ORDER BY AK$DEALER, FK$TRIP_TICKET;
    TTITLE LEFT 'Page: ' FORMAT 999 SQL.PNO RIGHT 'Batch: ' &BATCHNUM SKIP -
    CENTER 'South Atlantic king mackerel fishery (April-October)' SKIP -
    CENTER '- > 3,500lbs in Nassau-Volusia or' SKIP -
    CENTER '- > 500 lbs in Brevard-Dade or' SKIP -
    CENTER '- > 500 lbs H and L in rest of Gulf (until 7/1/1999)' SKIP 2;
    SELECT * FROM BATCHERS_REPORT
    WHERE ERROR_NUM = 26
    ORDER BY AK$DEALER, FK$TRIP_TICKET;
    TTITLE LEFT 'Page: ' FORMAT 999 SQL.PNO RIGHT 'Batch: ' &BATCHNUM SKIP -
    CENTER 'Gulf-Atlantic king mackerel fishery (November - March)' SKIP -
    CENTER '- > 500 lbs Volusia-Dade or' SKIP -
    CENTER ' > 1250 lbs H and L (>500 after 1/30/99 or' SKIP -
    CENTER ' > 25,000 lbs gill net (zero after 1/19/99) Monroe Escambia';
    SELECT * FROM BATCHERS_REPORT
    WHERE ERROR_NUM = 27
    ORDER BY AK$DEALER, FK$TRIP_TICKET;
    TTITLE LEFT 'Page: ' FORMAT 999 SQL.PNO RIGHT 'Batch: ' &BATCHNUM SKIP -
    CENTER 'More than 2,000 lbs mixed of Gulf red snapper.' SKIP 2;
    SELECT * FROM BATCHERS_REPORT
    WHERE ERROR_NUM = 28
    ORDER BY AK$DEALER, FK$TRIP_TICKET;
    TTITLE LEFT 'Page: ' FORMAT 999 SQL.PNO RIGHT 'Batch: ' &BATCHNUM SKIP -
    CENTER 'Bad or unusual gears for sponges.' SKIP 2;
    SELECT * FROM BATCHERS_REPORT
    WHERE ERROR_NUM = 29
    ORDER BY AK$DEALER, FK$TRIP_TICKET;
    TTITLE LEFT 'Page: ' FORMAT 999 SQL.PNO RIGHT 'Batch: ' &BATCHNUM SKIP -
    CENTER 'Date is blank, invalid, before begin date or after end date.' SKIP 2;
    SELECT * FROM BATCHERS_REPORT
    WHERE ERROR_NUM = 30
    ORDER BY AK$DEALER, FK$TRIP_TICKET;
    --SPOOL OFF;
    --SET TERMOUT ON;
    --PROMPT;
    --PROMPT REPORT WRITTEN TO BATCHERS.LST;
    --PROMPT;
    --TTITLE OFF;
    SET FEEDBACK ON;
    SET LINESIZE 72;
    SET PAGESIZE 32;
    --SET NEWPAGE 1;
    SET SERVEROUT OFF;
    SET VERIFY ON;
    SET ECHO ON;
    What is wrong with my syntax or what is I am doing wrong?
    Any help will be appreciated and thanks in advance,
    -Dmitriy

    a workaround was to split the string into 2 but this is not a long term solution:
    e.g.
    vString1 := 'INSERT INTO BATCHERS_REPORT
                  (BATCH, AK$DEALER, FK$TRIP_TICKET, INVOICE,
                  CONTINUATION_IND, TRIP_DATE, SPL_NO, AK$MRIS_AREA,
                  AK$MRIS_COUNTY, TIME_FISHED, TIME_UNITS, DEPTH, DEPTH_UNITS,
                  AK$MRIS_GEAR,AK$SPECIES, SPECIES_SIZE, WEIGHT_IN_POUNDS, UNIT_PRICE,ERROR_NUM)
                  SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
                  T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
                  T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS,
                  NULL, S.AK$SPECIES, LTRIM(S.SPECIES_SIZE),
                  TO_NUMBER(S.WEIGHT_IN_POUNDS), TO_NUMBER(S.UNIT_PRICE),
                  '||''''||MSGNUM||''''||'
                  FROM T$TRIP_TICKET_WORK T,
                  T$TRIP_TICKET_SPECIES_WORK S
                  WHERE TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||'
                  AND T.FK$TRIP_TICKET = S.AK$TRIP_TICKET
                  AND SUBSTR(T.TRIP_DATE,5,2) BETWEEN '||'''04'''||' AND '||'''10'''||'
                  AND S.AK$SPECIES = 165
                  AND S.WEIGHT_IN_POUNDS > 3500
                  AND T.AK$MRIS_COUNTY IN ('||'''26'''||', '||'''28'''||', '||'''55'''||', '||'''65'''||', '||'''74'''||')
                  UNION
                  SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
                  T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
                  T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS,
                  NULL,S.AK$SPECIES, LTRIM(S.SPECIES_SIZE),
                  TO_NUMBER(S.WEIGHT_IN_POUNDS), TO_NUMBER(S.UNIT_PRICE),
                  '||''''||MSGNUM||''''||'
                  FROM T$TRIP_TICKET_WORK T,
                  T$TRIP_TICKET_SPECIES_WORK S
                  WHERE TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||'
                  AND T.FK$TRIP_TICKET = S.AK$TRIP_TICKET
                  AND SUBSTR(T.TRIP_DATE,5,2) BETWEEN '||'''04'''||' AND '||'''10'''||'
                  AND S.AK$SPECIES = 165
                  AND S.WEIGHT_IN_POUNDS > 500
                  AND T.AK$MRIS_COUNTY IN ('||'''15'''||', '||'''16'''||', '||'''23'''||', '||'''41'''||', '||'''53'''||', '||'''60'''||', '||'''66'''||')
                  UNION
                  SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
                  T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
                  T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS,
                  NULL, S.AK$SPECIES, LTRIM(S.SPECIES_SIZE),
                  TO_NUMBER(S.WEIGHT_IN_POUNDS), TO_NUMBER(S.UNIT_PRICE),
                  '||''''||MSGNUM||''''||'
                  FROM T$TRIP_TICKET_WORK T,
                  T$TRIP_TICKET_SPECIES_WORK S
                  WHERE (TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||'
                  AND (T.FK$TRIP_TICKET = S.AK$TRIP_TICKET)
                  AND (SUBSTR(T.TRIP_DATE,5,2) BETWEEN '||'''04'''||' AND '||'''10'''||')
                  AND (S.AK$SPECIES = 165)
                  AND ((S.WEIGHT_IN_POUNDS > 1250 AND T.AK$MRIS_COUNTY = '||'''54'''||')
                  OR (T.AK$MRIS_AREA > 700 AND S.WEIGHT_IN_POUNDS > 500
                  AND T.AK$MRIS_COUNTY != '||'''54'''||'))
                  UNION
                  SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
                  T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
                  T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS,
                  G.AK$MRIS_GEAR, S.AK$SPECIES, LTRIM(S.SPECIES_SIZE),
                  TO_NUMBER(S.WEIGHT_IN_POUNDS), TO_NUMBER(S.UNIT_PRICE),
                  '||''''||MSGNUM||''''||'
                  FROM T$TRIP_TICKET_WORK T,
                  T$TRIP_TICKET_SPECIES_WORK S,
                  T$TRIP_TICKET_GEAR_WORK G
                  WHERE (TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||')
                  AND (T.FK$TRIP_TICKET = S.AK$TRIP_TICKET)
                  AND (T.FK$TRIP_TICKET = G.AK$TRIP_TICKET)
                  and (substr(t.trip_date,5,2) in ('||'''01'''||','||'''02'''||','||'''03'''||','||'''11'''||','||'''12'''||'))
                  and (S.AK$SPECIES = 165)
                  AND (S.WEIGHT_IN_POUNDS > 0)
                  AND (T.TRIP_DATE BETWEEN '||'''19990331'''||' AND '||'''19990701'''||')
                  AND (T.AK$MRIS_COUNTY NOT IN ('||'''15'''||','||'''16'''||','||'''23'''||','||'''26'''||','||'''28'''||','||'''41'''||','||'''53'''||','||'''54'''||','||'''55'''||','||'''60'''||','||'''65'''||','||'''66'''||','||'''74'''||')
                  AND ((G.AK$MRIS_GEAR IN (70, 80)) OR
                  (G.AK$MRIS_GEAR BETWEEN 4700 AND 4900) OR
                  (G.AK$MRIS_GEAR BETWEEN 5300 AND 5390)))';
    vString2 := 'UNION
                 SELECT T.BATCH, T.AK$DEALER, T.FK$TRIP_TICKET, T.INVOICE,
                 T.CONTINUATION_IND, T.TRIP_DATE, T.SPL_NO, T.AK$MRIS_AREA,
                 T.AK$MRIS_COUNTY, T.TIME_FISHED, T.TIME_UNITS, T.DEPTH, T.DEPTH_UNITS,
                 G.AK$MRIS_GEAR, S.AK$SPECIES, LTRIM(S.SPECIES_SIZE),
                 TO_NUMBER(S.WEIGHT_IN_POUNDS), TO_NUMBER(S.UNIT_PRICE),
                 '||''''||MSGNUM||''''||'
                 FROM T$TRIP_TICKET_WORK T,
                 T$TRIP_TICKET_SPECIES_WORK S,
                 T$TRIP_TICKET_GEAR_WORK G
                 WHERE (TO_NUMBER(T.BATCH) = '|| &BATCHNUM ||')
                 AND (T.FK$TRIP_TICKET = S.AK$TRIP_TICKET)
                 AND (T.FK$TRIP_TICKET = G.AK$TRIP_TICKET)
                 and (substr(t.trip_date,5,2) in ('||'''01'''||','||'''02'''||','||'''03'''||','||'''11'''||','||'''12'''||'))
                 and (S.AK$SPECIES = 165)
                 AND (S.WEIGHT_IN_POUNDS > 500)
                 AND (T.TRIP_DATE > '||'''19990130'''||')
                 AND (T.AK$MRIS_COUNTY NOT IN ('||'''15'''||','||'''16'''||','||'''23'''||','||'''26'''||','||'''28'''||','||'''41'''||','||'''53'''||','||'''54'''||','||'''55'''||','||'''60'''||','||'''65'''||','||'''66'''||','||'''74'''||'))
                 AND ((G.AK$MRIS_GEAR = 40) OR
                 G.AK$MRIS_GEAR BETWEEN 6100 AND 6190)';
    Execute Immediate vString1||vString2;

  • Execute immediate will work in SQL Block in shell script?

    Hi Friends,
    i am wirting script to get the account id's corresponding to CIF from oracle table and need to pass to procedure.
    Here first_org and last_org are shell variables.
    When i execute the below program it is throwing execute not found.
    Can you please correct me where i made a mistake? and also please let me know how to display some content in below sql block ?dbms_output.put_line or print which need to use and provide me the syntax for both.
    `sqlplus -s crmuser/******@dotis11<<ENDOFSQL
    whenever sqlerror exit 1
    declare
    qstr varchar2(200);
    facid varchar2(20);
    Lacid varchar2(20);
    begin
    qstr:='select ACCOUNTID from accounts where ORGKEY=:1';
    execute immediate qstr into facid using $first_org;
    dbms_output.put_line(facid);
    qstr:='select ACCOUNTID from accounts where ORGKEY=:1';
    execute immediate qstr into Lacid using $last_org;
    dbms_output.put_line(Lacid);
    exec Retail_Otu_Dedup_Account(facid,Lacid)
    end;
    exit;
    ENDOFSQL`
    Thanks,
    Venkat Vadlamudi.

    Hi SY,
    I Included set serveroutput on but i didn't include single quotes for shell variable in execute immediate.
    Now iam able to execute and getting proper o/p.
    Thanks SY for your help...
    and how to print shell variable in above sql block..i tried like this. but throwing error.
    dbms_output.put_line('$first_org');
    dbms_output.put_line('VCIF1320');
    ERROR at line 5:
    ORA-06550: line 5, column 12:
    PLS-00103: Encountered the symbol "." when expecting one of the following:
    constant exception <an identifier>
    *<a double-quoted delimited-identifier> table long double ref*
    char time timestamp interval date binary national character
    nchar
    The symbol "<an identifier>" was substituted for "." to continue.
    ORA-06550: line 6, column 5:
    PLS-00103: Encountered the symbol "=" when expecting one of the following:
    constant exception <an identifier>
    *<a double-quoted delimited-identifier> table long double ref*
    char time timestamp interval date binary national characte
    Thanks,
    Venkat Vadlamudi.

  • Cursor in EXECUTE IMMEDIATE

    How to use cursor in EXECUTE IMMEDIATE command.
    i.e. I have a dynamic SELECT query where I will get huge records while using EXECUTE IMEDIATE command, which I want that to be in a cursor.
    Can I do this ? If yes how ?

    Hi, it works perferctly fine with me. Oracle version 10.2.0.4
    SQL> --create table t as select * from user_objects; ----->>> My mistake, there is no owner column in the table user_objects
    SQL> create table t as select * from all_objects;
    Table created.
    SQL> CREATE OR REPLACE PROCEDURE dynamic_table (
      2    table_name IN VARCHAR2,
      condition IN VARCHAR2 DEFAULT NULL) AS
      3    4    where_clause VARCHAR2(100) := ' WHERE ' || condition;
      5    v_table varchar2(30);
      6    type v_typet  is table of t%rowtype index by pls_integer;
      7    v_tableT v_typeT;
      8  BEGIN
      -- first make sure that the table actually exists; if not, raise an exception
      SELECT OBJECT_NAME INTO v_table FROM USER_OBJECTS
      9   10   11    where object_name = upper(table_name) and object_type = 'TABLE';
      if condition is null then where_clause := ' order by object_type'; end if;
    12   13    execute immediate 'SELECT * from ' || v_table || where_clause  bulk collect into v_tablet;
    14    for indx in 1..v_tablet.count loop
        dbms_output.put_line(v_tablet(indx).owner || ' ' || v_tablet(indx).status);
    15   16    end loop;
    17    EXCEPTION
    18    when no_data_found then
    19      dbms_output.put_line ('Invalid table: ' || table_name);
    20  end;
    21  /
    Procedure created.
    begin
      dynamic_table('T', '');
      --Enter the table name you want for the 1st parameter and the condition for the second parameter.
      --I think you just want to switch from tables where you want to select.
    end;
    /Edited by: Spongebob on May 25, 2010 1:33 PM

  • Pipelined Function with execute immediate

    Hello Experts,
    I have created a Pipe lined function with execute immediate, due to below requirement;
    1) Columns in where clause is passed dynamically.
    2) I want to know the data stored into above dynamic columns.
    3) I want to use it in report, so I don't want to insert it into a table.
    I have created a TYPE, then through execute immediate i have got the query and result of that query will be stored in TYPE.
    But when calling the function i am getting
    ORA-00932: inconsistent datatypes: expected - got -
    Below is my function and type, let me know i am going wrong, and is my logic correct.
    CREATE OR REPLACE TYPE OBJ_FPD AS OBJECT
                      (LOW_PLAN_NO VARCHAR2 (40),
                       FPD VARCHAR2 (5),
                       SERIAL_NO NUMBER,
                       CEDIA_CODE VARCHAR2 (2),
                       DT DATE);
    CREATE OR REPLACE TYPE FPD_TBL_TYPE AS TABLE OF OBJ_FPD;
    CREATE OR REPLACE FUNCTION FUNC_GET_FPD_DATE (P_LOW_PLAN_NO    VARCHAR2,
                                                  P_CEDIA_CODE     VARCHAR2,
                                                  P_SERIAL_NO      NUMBER)
       RETURN FPD_TBL_TYPE
       PIPELINED
    AS
       CURSOR C1
       IS
              SELECT 'FPD' || LEVEL TBL_COL
                FROM DUAL
          CONNECT BY LEVEL <= 31;
       V_STR        VARCHAR2 (5000);
       V_TBL_TYPE   FPD_TBL_TYPE;
    BEGIN
       FOR X IN C1
       LOOP
          V_STR :=
                'SELECT A.low_PLAN_NO,
               A.FPD,
               A.SERIAL_NO,
               A.cedia_code,
               TO_DATE (
                     SUBSTR (FPD, 4, 5)
                  || ''/''
                  || TO_CHAR (C.low_PLAN_PERIOD_FROM, ''MM'')
                  || ''/''
                  || TO_CHAR (C.low_PLAN_PERIOD_FROM, ''RRRR''),
                  ''DD/MM/RRRR'')
                  DT FROM ( SELECT low_PLAN_NO, '
             || ''''
             || X.TBL_COL
             || ''''
             || ' FPD, '
             || X.TBL_COL
             || ' SPTS, SERIAL_NO, cedia_code FROM M_low_PLAN_DETAILS WHERE NVL('
             || X.TBL_COL
             || ',0) > 0 AND SERIAL_NO = '
             || P_SERIAL_NO
             || ' AND cedia_code = '
             || ''''
             || P_CEDIA_CODE
             || ''''
             || ' AND low_PLAN_NO = '
             || ''''
             || P_LOW_PLAN_NO
             || ''''
             || ') A,
               M_low_PLAN_DETAILS B,
               M_low_PLAN_MSTR C
         WHERE     A.low_PLAN_NO = B.low_PLAN_NO
               AND A.cedia_code = B.cedia_code
               AND A.SERIAL_NO = B.SERIAL_NO
               AND B.low_PLAN_NO = C.low_PLAN_NO
               AND B.CLIENT_CODE = C.CLIENT_CODE
               AND B.VARIANT_CODE = C.VARIANT_CODE
    CONNECT BY LEVEL <= SPTS';
          EXECUTE IMMEDIATE V_STR INTO V_TBL_TYPE;
          FOR I IN 1 .. V_TBL_TYPE.COUNT
          LOOP
             PIPE ROW (OBJ_FPD (V_TBL_TYPE (I).LOW_PLAN_NO,
                                V_TBL_TYPE (I).FPD,
                                V_TBL_TYPE (I).SERIAL_NO,
                                V_TBL_TYPE (I).CEDIA_CODE,
                                V_TBL_TYPE (I).DT));
          END LOOP;
       END LOOP;
       RETURN;
    EXCEPTION
       WHEN OTHERS
       THEN
          RAISE_APPLICATION_ERROR (-20000, SQLCODE || ' ' || SQLERRM);
          RAISE;
    END;Waiting for your views.
    Regards,

    Ora Ash wrote:
    Hello Experts,
    I have created a Pipe lined function with execute immediate, due to below requirement;
    1) Columns in where clause is passed dynamically.No, that's something you've introduced, and is due to poor database design. You appear to have columns on your table called FPD1, FPD2 ... FPD31. The columns do not need to be 'passed dynamically'
    2) I want to know the data stored into above dynamic columns.And you can know the data without it being dynamic.
    3) I want to use it in report, so I don't want to insert it into a table.That's fine, though there's no reason to use a pipelined function.
    You also have an pointless exception handler, which masks any real errors.
    I'm not quite sure what the point of your "connect by" is in your query as we don't have your tables or data or know for sure what the expected output is.
    However, in terms of handling the 'dynamic' part that you've introduced, then you would be looking at doing something along the following lines, using a static query that requires no poor dynamic code, and no pipelined function...
    with x as (select level as dy from dual connect by level <= 31)
    select a.low_plan_no
          ,a.fpd
          ,a.serial_no
          ,a.cedia_code
          ,trunc(c.low_plan_period_from)+a.dy-1 as dt
    from  (select low_plan_no
                 ,dy
                 ,'FPD'||dy as fpd
                 ,spts
                 ,serial_no
                 ,cedia_code
           from (
                 select low_plan_no
                       ,x.dy
                       ,case x.dy when 1 then fpd1
                                  when 2 then fpd2
                                  when 3 then fpd3
                                  when 4 then fpd4
                                  when 5 then fpd5
                                  when 6 then fpd6
                                  when 7 then fpd7
                                  when 8 then fpd8
                                  when 9 then fpd9
                                  when 10 then fpd10
                                  when 11 then fpd11
                                  when 12 then fpd12
                                  when 13 then fpd13
                                  when 14 then fpd14
                                  when 15 then fpd15
                                  when 16 then fpd16
                                  when 17 then fpd17
                                  when 18 then fpd18
                                  when 19 then fpd19
                                  when 20 then fpd20
                                  when 21 then fpd21
                                  when 22 then fpd22
                                  when 23 then fpd23
                                  when 24 then fpd24
                                  when 25 then fpd25
                                  when 26 then fpd26
                                  when 27 then fpd27
                                  when 28 then fpd28
                                  when 29 then fpd29
                                  when 30 then fpd30
                                  when 31 then fpd31
                        else null
                        end as spts
                       ,serial_no
                       ,cedia_code
                 from   x cross join m_low_plan_details
                 where  serial_no = p_serial_no
                 and    cedia_code = p_cedia_code
                 and    low_plan_no = p_low_plan_no
           where  nvl(spts,0) > 0
          ) A
          join m_low_plan_details B on (    A.low_plan_no = B.low_plan_no
                                        and A.cedia_code = B.cedia_code
                                        and A.serial_no = B.serial_no
          join m_low_plan_mstr C on (    B.low_plan_no = C.low_plan_no
                                     and B.client_code = C.client_code
                                     and B.variant_code = C.variant_code
    connect by level <= spts;... so just remind us again why you think it needs to be dynamic?

Maybe you are looking for

  • Ipod Touch not being recognised/unknown device

    Ipod Touch not being recognised - help!? It says it's a code 43 - Unknown device/device not recognised. Doesn't sound good. Tried all of the things the itunes website suggested such as of course turning it off and on again, restarting services, reins

  • SAP SRM Prod with Oracle DB and AIX 5.3 Performance Issue.

    Hi Basis Gurus, Today my SAP PRD system all of a sudden was running slow and users had difficulties executing TCodes as it took minutes before the screen appeared.My system is SAP SRM 4.00, Oracle Release 11.2.0.1.0 and AIX 5.3. From Basis point of v

  • Jbuilder compiler problem with xml DOM - please help.

    my problem is that I am using jbuilder 4 professional to compile/run my code. However I want to use the XML DOM but jbuilder does not appear to support the necessary packages for use with XML. How can I get round this. Can I compile instead from the

  • NVRAM issues, then dead screen

    My girlfriend's Macbook Pro, a 2009 Core 2 Duo 2.16ghz, went totally dead about a month ago. After doing some research, I found that resetting the NVRAM (Command+Option+P+R) seemed to get it running again. We'd have to do this once a week or so. And

  • How to use TestRunnerBase in pure AS3 / no MXML

    Hi, is there a way to use the testRunnerBase GUI for a pure AS3 project, without a mxml? Thank you