Executing parameterised PL sql block

hi,
I have a procedure which takes in parameter of a table name.
In the procedure i have a variable (say rowcount).
I want the variable rowcount to have the number of records present in that
particular table (passed as a parameter).
One way of doing this is getting the count in a dummy table and then
querying it.
Is there a better way out ?
Trupti

yes, use dynamic sql e.g.
execute immediate 'select count (0) from ' || table_name_parameter into tabcnt_variable;

Similar Messages

  • Executing a PL/SQL block (using Toplink)

    I have a scenario where I need to execute some fairly complex PL/SQL blocks. As a tester, I am attempting to execute the following simple block:
    declare val NUMBER := 1; begin val := 2; end;
    Both wrapping this in an SQLCall, or a DataReadQuery give the following exception. What is the best way to execute a PL/SQL block using Toplink?
    Local Exception Stack:
    Exception [TOPLINK-4002] (Oracle TopLink - 10g Release 3 (10.1.3.0.0) (Build 060118)): oracle.toplink.exceptions.DatabaseException
    Internal Exception: java.sql.SQLException: ORA-00900: invalid SQL statement
    Error Code: 900
    Call: declare val NUMBER := 1; begin val := 2; end;
    Query:DataReadQuery()
         at oracle.toplink.exceptions.DatabaseException.sqlException(DatabaseException.java:290)
         at oracle.toplink.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:570)
         at oracle.toplink.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:442)
         at oracle.toplink.threetier.ServerSession.executeCall(ServerSession.java:453)
         at oracle.toplink.internal.queryframework.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:117)
         at oracle.toplink.internal.queryframework.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:103)
         at oracle.toplink.internal.queryframework.DatasourceCallQueryMechanism.executeSelectCall(DatasourceCallQueryMechanism.java:174)
         at oracle.toplink.internal.queryframework.DatasourceCallQueryMechanism.executeSelect(DatasourceCallQueryMechanism.java:156)
         at oracle.toplink.queryframework.DataReadQuery.executeNonCursor(DataReadQuery.java:118)
         at oracle.toplink.queryframework.DataReadQuery.executeDatabaseQuery(DataReadQuery.java:110)
         at oracle.toplink.queryframework.DatabaseQuery.execute(DatabaseQuery.java:603)
         at oracle.toplink.queryframework.DataReadQuery.execute(DataReadQuery.java:96)
         at oracle.toplink.publicinterface.Session.internalExecuteQuery(Session.java:2062)
         at oracle.toplink.publicinterface.Session.executeQuery(Session.java:981)
         at oracle.toplink.publicinterface.Session.executeQuery(Session.java:938)

    Could you try the following:
            Session s = ...
            DataModifyQuery dmq = new DataModifyQuery();
            SQLCall sqlCall = new SQLCall();
            sqlCall.setQueryString(
                "declare\n" +
                "  val NUMBER := 1;\n" +
                "begin\n" +
                "  val := 2;\n" +
                "end;");
            sqlCall.setQuery(dmq);
            dmq.setCall(sqlCall);
            s.executeQuery(dmq);

  • Obtaining a collection as a return from an execute immediate pl/sql block

    version 10.2
    I need to obtain the collection back from the execute immediate of a pl/sql block:
    procedure block(owner varchar2) is
    stmt                   long;
    objecttab_coll         dbms_stats.objecttab;
    begin
    stmt := '
       begin
        dbms_stats.gather_schema_stats(''' || owner || '''
         ,options => ''LIST AUTO''
         ,objlist => :objecttab_coll
       end;'; 
    execute immediate stmt returning into objecttab_coll;
    -- do more stuff here
    end block;I have tried this + a few variations but with no luck. In looking through the docs I do not see an example. can this be done?
    Thanks
    Ox

    I dont find any need for an execute immediate here. This must be just enough.
    procedure block(owner varchar2)
    is
         objecttab_coll         dbms_stats.objecttab;
    begin
         dbms_stats.gather_schema_stats(ownname => owner, options => 'LIST AUTO', objlist => objecttab_coll);
         -- do more stuff here
    end block;Thanks,
    Karthick.

  • How to re-execute anonymous PL/SQL block in package definition ?

    Hi all,
    I implemented a package which contains procedures and an anonymous PL/SQL block.
    This anonymous PL/SQL block is executed only once when the package is called.
    and charge in-memory the content of table to avoid multiple SQL access each
    time one procedure is called.
    As my application open many sessions to the Oracle database, I would like to try
    a solution to signal all sessions to reload the content of table when the content
    of table is modified. The solution to stop and to restart the connection is not
    acceptable.
    Best regards
    Sylvain

    > .. to avoid multiple SQL access each time one procedure is called.
    As I understand your posting, this is the actual technical requirement. You want to force serialisation of PL/SQL code. Correct? (only one session at a time can run the procedure)
    This feature typically used to accomplish this in o/s code is called a semaphore. PL/SQL does not specifically support semaphores. However, it supports a range of IPC (Inter Process Communication) methods - from message queues to pipes.
    One of these IPC interfaces is DBMS_LOCK - which allows a unique lock to be defined and processes to manage their resource usage/execution/etc via this lock using the DBMS_LOCK API.
    I've found this a pretty clean and manageable solution to enforce serialisation. Of course, it is even better not to enforce serialisation. Rather design the code to be thread safe and capable of multi-processing/parallel processing.
    Personally, I would not use a table as an IPC mechanism as Oracle already provides better IPC mechanisms for PL/SQL code. As for "signalling sessions to re-load the table" - not possible as Oracle sessions cannot register callbacks to handle events. Oracle sessions are not event driven processes from a PL/SQL (application development) perspective.

  • Accepting user input and executing a PL/SQL block using it

    Hi All,
    I am working on a requirement wherein I have to accept values from the user for the various arguments to be supplied to a PL/SQL block and then execute it using these values. For now, I am using the following logic:
    PROMPT Enter value for the Category
    ACCEPT cCategory CHAR PROMPT 'Category:'
    DECLARE
    cCategry CHAR(1) := '&cCategory';
    BEGIN
    DBMS_OUTPUT.PUT_LINE('The value of the Category as entered by you is' || cCategory);
    END;
    PROMPT Press y if you want to proceed with the current values, or press n if you want to re-enter the values
    ACCEPT cChoice CHAR Prompt 'Enter y or n:'
    DECLARE
    cCategry CHAR(1) := '&cCategory';
    sErrorCd VARCHAR2(256);
    sErrorDsc VARCHAR2(256);
    BEGIN
    IF '&cChoice' = 'y'
    THEN
    DBMS_OUTPUT.PUT_LINE('Starting with the process to execute the stored proc');
    --- schema1.package1.sp1(cCategry, sErrorCd, sErrorDsc);
    --- DBMS_OUTPUT.PUT_LINE('Error Code :' || sErrorCd);
    --- DBMS_OUTPUT.PUT_LINE(' Error Description :' || sErrorDsc);
    ELSIF '&cChoice' = 'n'
    THEN
    Now I want that the proc again start executing in the loop from the 1st line i.e. PROMPT Enter value for the Category. However i see that this is not possible to do that PROMPT statements and accepting user inputs execute only on the SQL prompt and not inside a PL/SQL block.
    Is there an alternate method to establish this?
    Thanks in advance.

    Hi,
    You can write a genric procedure to achive the desired output. Pass 'Y' or 'N' in the procedure.
    Call that procedure in simple pl/sql block during runtime using substituton operator.
    For ex
    create or replace procedure p1(category_in in varchar2)
    IS
    BEGIN
    if (category_in='Y')
    then
    prcdr1()
    /** Write your logic here ***/
    elsif(category_in='N') then
    prcdr2()
    /** write your logic here***/
    end if;
    exception
    /***write the exception logic ***/
    end p1;
    Begin
    p1('&cat');
    end;Regards,
    Achyut K
    Edited by: Achyut K on Aug 6, 2010 5:20 AM

  • Execute anonymous PL/SQL block via JDBC - OUT parameter not available

    I have a simple proc on the database:
    CREATE PROCEDURE TEST(X OUT BINARY_INTEGER, Y IN VARCHAR) AS
    BEGIN
      X := 33;
    END; I am trying to invoke it via JDBC using an anonymous PL/SQL block:
            try {
                Connection connection =
                  DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORCL",
                    "scott", "tiger");
                CallableStatement stproc_stmt = connection.prepareCall(
                    "DECLARE\n" +
                    " X_TARGET BINARY_INTEGER;\n" +
                    " Y_TARGET VARCHAR(20) := :2;\n" +
                    "BEGIN\n" +
                    " TEST(X=>X_TARGET, Y=>Y_TARGET);\n" +
                    " :1 := X_TARGET;\n" +
                    "END;"
                stproc_stmt.registerOutParameter(1, Types.NUMERIC);
                stproc_stmt.setString(2, "test");
                stproc_stmt.executeUpdate();
                Object o = stproc_stmt.getObject(1);
            catch (Exception e) {
                e.printStackTrace();
            } No exceptions are thrown, but the Object o does not get the value '33' - it is NULL.
    Any ideas?
    thanks in advance,
    Mike Norman

    I think the issue may be in how JDBC parameter binding is being managed throughout the block's lifecycle.
    The slightly-different TEST2 works:
    CREATE PROCEDURE TEST2(Y IN VARCHAR, X OUT BINARY_INTEGER) AS
    BEGIN
      X := 33;
    END;
    try {
        Connection connection =
          DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORCL",
         "scott", "tiger");
        CallableStatement stproc_stmt = connection.prepareCall(
         "DECLARE\n" +
         " Y_TARGET VARCHAR(20) := :1;\n" +
         " X_TARGET BINARY_INTEGER;\n" +
         "BEGIN\n" +
         " TEST2(Y=>Y_TARGET, X=>X_TARGET);\n" +
         " :2 := X_TARGET;\n" +
         "END;"
        stproc_stmt.setString(1, "test");
        stproc_stmt.registerOutParameter(2, Types.NUMERIC);
        stproc_stmt.executeUpdate();
        Object o = stproc_stmt.getObject(1);
    catch (Exception e) {
        e.printStackTrace();
    }The order of the bind indices ':1' and ':2' are reversed in the above anonymous block - we are returning via ':2'.
    I am wondering if 'under the covers' there isn't perhaps a cursor issue. When the original block is parsed and the first bind index is found to be position 2, somehow we can't go back to position 1 - a forwards-only cursor?

  • Execute immediate a sql block of istructions

    Hello,
    i need to to do something like this:
    execute immediate par;
    where par is a big file stored in a table that is simply a pl/sql script like this
    comment on table SOMETABLE.COLUMN is 'this' ;
    comment on table SOMETABLE.COLUMN2 is 'this' ;
    and so on for 45 columns. when i try it say that ; is not a valid character. It works only if i put only a row in the table.
    How i can put more istructions in a string to be "execute immediate"
    Thanks
    Edited by: user12195888 on 10-nov-2009 7.59

    In the example already provided be aware that if you have commands that aren't supported in PL/SQL like COMMENT this approach may not work. Here is an example that breaks the string up on the semi-colon terminator:
    SQL> DROP TABLE A;
    Table dropped.
    SQL> DROP TABLE B;
    Table dropped.
    SQL> DROP TABLE C;
    Table dropped.
    SQL> DROP TABLE INSTRUCTION_TEST;
    Table dropped.
    SQL>
    SQL> CREATE TABLE A (ID NUMBER);
    Table created.
    SQL> CREATE TABLE B (ID NUMBER);
    Table created.
    SQL> CREATE TABLE C (ID NUMBER);
    Table created.
    SQL> CREATE TABLE INSTRUCTION_TEST
      2  (
      3          INSTRUC VARCHAR2(4000)
      4  );
    Table created.
    SQL>
    SQL> INSERT INTO INSTRUCTION_TEST
      2  VALUES
      3  (
      4          'COMMENT ON TABLE A IS ''Table A''; COMMENT ON TABLE B IS ''Table B''; COMMENT ON TABLE C IS ''Table C'';'
      5  );
    1 row created.
    SQL>
    SQL> DECLARE
      2  BEGIN
      3          FOR r IN
      4          (
      5                  WITH    instructions AS
      6                  (
      7                          SELECT  ';' || INSTRUC AS INST
      8                          FROM    INSTRUCTION_TEST
      9                  )
    10                  SELECT  SUBSTR
    11                          (
    12                                  INST
    13                          ,       INSTR(INST,';',1,LEVEL) + 1
    14                          ,       INSTR(INST,';',1,LEVEL+1) - INSTR(INST,';',1,LEVEL) - 1
    15                          )       AS INDIVIDUAL_STATEMENT
    16                  FROM    instructions
    17                  CONNECT BY LEVEL <= LENGTH(REGEXP_REPLACE(INST,'[^;]','')) - 1
    18          )
    19          LOOP
    20                  --DBMS_OUTPUT.PUT_LINE(r.INDIVIDUAL_STATEMENT);
    21                  EXECUTE IMMEDIATE r.INDIVIDUAL_STATEMENT;
    22          END LOOP;
    23  END;
    24  /
    PL/SQL procedure successfully completed.
    SQL> SELECT * FROM ALL_TAB_COMMENTS WHERE TABLE_NAME IN ('A','B','C');
    OWNER                          TABLE_NAME                     TABLE_TYPE  COMMENTS
    TEST_USER                      C                              TABLE       Table C
    TEST_USER                      B                              TABLE       Table B
    TEST_USER                      A                              TABLE       Table AHTH!

  • Executing pl/sql block

    hi,
    i created a pl/sql block using ed <filename.sql> and tried to execut it useing @<filena.sql> or run <filename.sql>.for the 2nd command the message i got is "nothing
    in buffer to run" and for the 1st comm i got nothing. i dint event get prompt.
    i am totally new to oracle. please solve my probs.
    thanq

    To execute the PL/SQL block make sure that you have a "/" at the end of your PL/SQL block and then an <Return character>. Once you have that then you can type C:\..\..\@filename.sql. If you don't put the "/" and "return character" it in your script then after typing C:\..\..\@filename.sql press enter and then type in "/" and then press enter again.
    Soji.

  • How to execute pl/sql block from a file

    hi all,
    can anybody tell me how to execute a pl/sql block from a file.it wont contain any procedures.it is of the form
    --begin
    --declare
    --end;
    Thanx

    Here is the file
    File is stored in C Drive (Windows Environment)
    declare
    x number;
    begin
    select 1 into x from dual;
    dbms_output.put_line(x);
    end;
    SQL> @c:\t.sql;
    1
    PL/SQL procedure successfully completed.Are you facing any issues?
    Regards,
    Bhushan

  • Oracle pl/sql  block in java

    Hi,
    Everybody I just want to know how we execute the pl/sql (oracle9i)block(not store Procedure)
    in java that have explicit cursor and how we print or display the value in cursor..
    pl/sql block declare
    v_id number;
    cursor cv1 IS
    select request_id from requests where sys_id = 3
    begin\n
    open cv1;
    loop
    fetch cv1 into v_id;
    exit when cv1%notfound;
    dbms_output.put_line(v_id);
    end loop; \n"
    end;;
    i try it like simple sql query
    Connection conn = null;
    Statement stmt = null;
    ResultSet rs = null;
    conn = DriverManager.getConnection(url, name, pass);
    stmt = conn.createStatement();
    rs = stmt.executeQuery(pl/sql block);
    I want display the value store in cursor............in java....
    kindly help me........
    regard's
    paritosh tomar

    Paritosh,
    You can execute anonymous PL/SQL blocks in JDBC.
    I suggest searching this forum's archives for the word "anonymous".
    If I remember correctly, there should be a relevant post from David Rolfe from a few years ago.
    Good Luck,
    Avi.

  • Anonymous PL/SQL block within a select statement

    I read somewhere that it was possible to build an anonymous pl/sql block within a sql statement. Something along the lines of:
    select
    begin
    i = 0;
    return i;
    end;
    from dual;
    However, for the life of me, I can't find documentation on this. Could someone please point me to the right place, assuming I'm not just imagining it.
    Thanks.

    Did you mean, executing a pl/sql block generated from an sql.
    declare
    cmd varchar2(100);
    begin
    select 'declare i pls_integer := 0; begin i:=1; end;' into cmd from dual;
    execute immediate cmd;
    end;
    [pre]                                                                                                                                                                                                                                                                                                                                                                                                                                                               

  • PL/SQL block on new jdbc connection

    Can someone please suggest, how can we execute a pl/sql block whenever a new connection is established in weblogic server.
    tried setting InitSQL value in jdbc source as: SQL exec pkg.func() but it didn't worked and server failed to start.
    Any suggestion?

    Hi,
    That's interesting. Could this also work for the Test Table statement? And, if so, what should the block do to make the test fail? Raise an exception?
    Thanks,
    Sebastien

  • PL/SQL block taking different duration

    Dear Oracle Gurus
    I executed a PL/SQL block which took 10 min to complete. I again executed the same thing , this time it took 8 mins ... after which the time taken was between 7 and 8 min. it was never 10 min .
    I was told that this happens due to REDO log that parsing doesnt happens when we execute the process again and hence the time taken is less than the first time .
    Kindly clarify me in this regard.
    Since i am testing the script i would like to have the correct time taken , whenever i execute it how can we do this .. like clearing the redo log for this particular script
    Kindly guide me in this regard
    with warm regards
    ssr

    was told that this happens due to REDO log that parsing doesnt happens when we execute the process again and hence the time taken is less than the first time .
    Who mentoned to you that due to REDO Logs , the parsing didnt happen and your block ran more fastly, please for heaven sake ask him/her to read oracle concepts guide.Believe me , he/she really needs it.
    Your block's data got cached so you saw a decrease in the time of the query result.This holds true for the block itself but if it was an anonymous block than you wont enjoy the benefit of reusing it actualy.The oracle cache is kicking in here.
    Since i am testing the script i would like to have the correct time taken , whenever i execute it how can we do this .. like clearing the redo log for this particular script
    I amnot able to get this.What do you mean by correct timing?What exactly is the bench mark that you are trying to meet?
    Please redo log clearance has nothing to do with this.
    Post the script also what you are trying to run with oracle version of yours.And how you are measuting the time taken?
    Aman....

  • Can't create a sequence within a pl/sql block with execute immediate.

    Hi All. I created a user and granted it the 'create sequence' privilege though a role. In a pl/sql block I try to create a sequence using 'execute immediate' but get a 1031-insufficient privileges error. If I grant create sequence directly to the user, the pl/sql block completes successfully. Can anyone explain this behavior? We're running 11.2 Enterprise Editon.
    Thanks,
    Mark

    In a definer's rights stored procedure (the default), you only have access to privileges that have been granted directly, not via a role.
    There are two basic reasons for that. First, roles can be enabled or disabled, default and non-default, password-protected, etc. so the set of roles a particular user actually has is session-specific. Oracle needs to know at compile time what privileges the owner of the procedure has. The only way to do that (without deferring the privilege check) is to ignore privileges granted through roles.
    Second, since 99% of privilege management DBAs do involves granting and revoking roles, it's helpful that changing role privileges will never cause objects to be marked invalid and recompiled which can have side-effects on applications. DBAs only need to worry about causing problems on those rare cases where they are granting or revoking direct privileges to users.
    You can create an invoker's rights stored procedure by adding the clause (AUTHID CURRENT_USER). That defer's the security check to run-time but allows the procedure to see privileges granted through roles in the current session. But that means that the caller of the procedure would need to have the CREATE SEQUENCE privilege through the role, not the owner of the procedure.
    And just to make the point, dynamic object creation in PL/SQL is almost always a red flag that there is something problematic in your design. If you are creating sequences dynamically, that means that you'd have to refer to them dynamically throughout your code which means that your inserts would need to use dynamic SQL. That's not a particularly easy or safe way to develop code.
    Justin

  • Error executing pl sql block

    Hii All,
    I'm facing the following error
    ERROR at line 66:
    ORA-06550: line 66, column 20:
    PLS-00306: wrong number or types of arguments in call to '||'
    ORA-06550: line 66, column 11:
    PL/SQL: Statement ignoredVersion Details
    SQL> select * from v$version;
    BANNER
    Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production
    PL/SQL Release 11.1.0.7.0 - Production
    CORE    11.1.0.7.0      Production
    TNS for Solaris: Version 11.1.0.7.0 - Production
    NLSRTL Version 11.1.0.7.0 - ProductionMy pl sql block
    Declare
        p_table_name  clob := 'CP_CA_DTLS' ;
        Type t_column_name_tab is table of varchar2(4000)
        index by binary_integer;
        l_table_tab      t_column_name_tab;
        l_file_name constant varchar2(5000) := 'column_counts';
        l_count      number;
        l_tab_count    number;
        l_str    varchar2(32000);
        l_tbl_str  varchar2(32000);
      Cursor c_table_columns(c_table_name user_tables.table_name%type)
      Is
        Select  column_name
        from  user_tab_cols
        where  table_name = upper(c_table_name);
      Type t_table_columns is table of c_table_columns%rowtype;
       l_column_name_tab  t_table_columns;
    Begin
        --Splitting comma seperated data
        Select  regexp_substr(p_table_name,'[^,]+{1}',1,level)
        bulk collect into  l_table_tab
        from  dual
        connect by level <= length(regexp_replace(p_table_name,'[^,]*'))+1;
        for k in 1..l_table_tab.count
        loop
         -- dbg_print(l_file_name,'***'||l_table_tab(k)||'***');   
          Begin
              l_tbl_str := 'Select count(*) from '||l_table_tab(k);
              execute immediate l_tbl_str into l_tab_count;
            --  dbg_print(l_file_name,'Overall Count of table '||l_table_tab(k)||' is '||l_tab_count);   
          End;
       -- dbg_print(l_file_name,'Column Name '||','||'Count'); 
        Open c_table_columns(l_table_tab(k));
        loop
          Fetch c_table_columns bulk collect into l_column_name_tab limit 50;
          exit when l_column_name_tab.count = 0;
          dbms_output.put_line('l_column_name_tab.count count is : '||l_column_name_tab.count);
            for i in 1..l_column_name_tab.count
            loop
            Begin
              l_str := 'Select count(*) ' ;
              l_str := l_str||' from  '||l_table_tab(k) ;
              l_str := l_str||' where '||l_column_name_tab(i);
              l_str := l_str||' is null'  ;
              Execute Immediate l_str into l_count;
            End;
            --dbg_print(l_file_name,l_column_name_tab(i)||','||l_count);
            end loop;
        end loop;
        Close c_table_columns;
      end loop;
          dbms_output.put_line('l_column_name_tab.count count is : '||l_column_name_tab.count);
    End;Even I'm not able to print l_column_name_tab(i) using dbms_output.
    (Later I came to know that this information can be achieved using user_tab_col_statistics table)
    But would like to know whats wrong with my code.???
    Plz help me .
    Edited by: 792353 on Dec 3, 2010 1:26 AM

    Hii RDB,
    when I comment this part of code
      --   l_str := l_str||' where '||l_column_name_tab(i);
           --   l_str := l_str||' is null'  ;
    SQL> Declare
      2 
      3 
      4      p_table_name  clob := 'CP_CA_DTLS' ;
      5 
      6      Type t_column_name_tab is table of varchar2(4000)
      7      index by binary_integer;
      8     
      9      l_table_tab      t_column_name_tab;
    10    
    11 
    12 
    13 
    14      l_file_name constant varchar2(5000) := 'column_counts';
    15      l_count      number;
    16      l_tab_count    number;
    17      l_str    varchar2(32000);
    18      l_tbl_str  varchar2(32000);
    19   
    20    Cursor c_table_columns(c_table_name user_tables.table_name%type)
    21    Is
    22      Select  column_name
    23      from  user_tab_cols
    24      where  table_name = upper(c_table_name);
    25     
    26     
    27    Type t_table_columns is table of c_table_columns%rowtype;
    28   
    29   
    30     l_column_name_tab  t_table_columns;
    31   
    32  Begin
    33      --Splitting comma seperated data
    34     
    35      Select  regexp_substr(p_table_name,'[^,]+{1}',1,level)
    36      bulk collect into  l_table_tab
    37      from  dual
    38      connect by level <= length(regexp_replace(p_table_name,'[^,]*'))+1;
    39     
    40      for k in 1..l_table_tab.count
    41      loop
    42       -- dbg_print(l_file_name,'***'||l_table_tab(k)||'***');   
    43       
    44        Begin
    45            l_tbl_str := 'Select count(*) from '||l_table_tab(k);
    46       
    47            execute immediate l_tbl_str into l_tab_count;
    48       
    49          --  dbg_print(l_file_name,'Overall Count of table '||l_table_tab(k)||' is '||l_tab_coun
    t);   
    50 
    51        End;
    52 
    53     -- dbg_print(l_file_name,'Column Name '||','||'Count'); 
    54 
    55      Open c_table_columns(l_table_tab(k));
    56      loop
    57        Fetch c_table_columns bulk collect into l_column_name_tab limit 50;
    58        exit when l_column_name_tab.count = 0;
    59        dbms_output.put_line('l_column_name_tab.count count is : '||l_column_name_tab.count);
    60          for i in 1..l_column_name_tab.count
    61          loop
    62          
    63          Begin
    64            l_str := 'Select count(*) ' ;
    65            l_str := l_str||' from  '||l_table_tab(k) ;
    66         --   l_str := l_str||' where '||l_column_name_tab(i);
    67         --   l_str := l_str||' is null'  ;
    68         
    69            Execute Immediate l_str into l_count;
    70 
    71          End;
    72         
    73          --dbg_print(l_file_name,l_column_name_tab(i)||','||l_count);
    74       
    75          end loop;
    76      end loop;
    77      Close c_table_columns;
    78    end loop;
    79 
    80        dbms_output.put_line('l_column_name_tab.count count is : '||l_column_name_tab.count);
    81  End;
    82  /
    PL/SQL procedure successfully completed.its running fine so the problem is l_column_name_tab(i) !!!!!!
    and there is nothing wrong with l_table_tab(k) and its declaration.
    Edited by: 792353 on Dec 3, 2010 2:17 AM

Maybe you are looking for

  • Make the link from the single cell of Bex Report and the image of bill

    Hi guys, my client scan every bill and archive the image by File.net technology. In our Bex Report we have the Bill number and we want to make the link from the single cell and the image of bill. The possible paths to solve the problem are:        Re

  • Array out of bounds exception when outputting array to file

    Could someone please tell me why i'm getting this array out of bounds exception? public class Assignment1 { public static void main(String[] names)throws IOException { BufferedReader keyboard = null; String userChoice; String inputFile = null; String

  • Error in Local Message System

    i wanted to send the messages from solution manager menu help create support message , here I am facing the problem when i am creating the message in the menu HELP -> Create Syupport Message for your reference am attaching the screen shot. Error in L

  • Why isn't my app store password working?

    Whenever I try to by a new app when it asks me to type in the password it keeps saying its in correct

  • Music downloads are slowing down my computer

    Is it possible that too many music downloads can be slowing down my apple computer? If so, is it possible to transfer music to my iPod and delete it from the computer's harddrive w/o the music deleting from the iPod during the next sync? Please help!