Run pubs "in the clause.

Hello world

I try to use Execute pubs with "en" clasue in there. Here is the code that I have
create or replace PROCEDURE test (COLUMN_NAME VARCHAR2) is

VAR_VALUE NUMBER;

lv_sql  varchar2(4000);

begin
--DBMS_OUTPUT.PUT_LINE()
lv_sql := 'SELECT MAX('||':column_name'||') FROM AUTHORIZATION_X';
DBMS_OUTPUT.PUT_LINE (lv_sql);
execute immediate lv_sql into var_value
using column_name;
DBMS_OUTPUT.PUT_LINE (to_char(VAR_VALUE));

end; 
This is the simplest code that I use. I need to pass a 'name cloumn' in a table and I try to get the max value in this table and display.
I'm getting some 'not a sql valid' error when I use the code above.

Please correct my code is there is nothing wrong in.

and in some documents I've seen: 1: 2:3 ratings where we need to pass parameters to the dynamic sql statements. Should it be in any order?

Thank you
Phani

Marella Phani wrote:
Hi blushadow and sean.

Thanks for the reply...

In fact, we do periodic refersh of the prod database for test, development environment. In this update of the test, dev environments sequences become out of sync (I think).

Sean... Yesterday I read somewhere that "we must delete and recreate sequences if we start the sequence with the new value' '

I'll try this coomand rather 'ALTER SEQUENCE your_seq INCREMENT BY x"and get back to you if I have a problem...

Here is an example of reset sequences...

{code}
SQL > select test.nextval from double;

NEXTVAL
----------
125

SQL > v_inc var number;
SQL > v_resetno var number;
SQL > exec: v_resetno: = 50;

PL/SQL procedure successfully completed.

SQL > exec 'select-(test.nextval-:x)-1 of the double' immediate execution in: using v_inc: v_resetno;

PL/SQL procedure successfully completed.

SQL > exec immediately executes ' change increment test sequence of '. : v_inc;

PL/SQL procedure successfully completed.

SQL > select test.nextval from double;

NEXTVAL
----------
49

SQL > alter the test sequence increment by 1.

Modified sequence.

SQL > select test.nextval from double;

NEXTVAL
----------
50

SQL > select test.nextval from double;

NEXTVAL
----------
51

SQL >
{code}

Sean and blushadow... I saw using: 1: 2:3 in dynamic sql. How do I use this syntax? who should be in a particular order?
can we use other names?

Yes, you can as in my sample code above. The bind variable are just placeholders, so you can call it what you like. What you should remember, is that you can only bind in values, not the column names or table names.

Tags: Database

Similar Questions

  • run immediately with the help of clause

    Hey, if we can link the oracle parameters in the execute immediate statement why Oracle is having using the clause to it.
    What is the use of the use of this clause.

    When you say "bind" I think you mean something other than what most people hear when they hear "bind" in the context of variables.

    Yes we can include variables in a string dynamically executed like this:

    execute immediate 'select * from emp where deptno = '|| v_deptno;
    

    However, it actually treats the variable a hardcoded in a literal string value. The statement is difficult analyzed whenever it is executed.

    Whereas, the USING clause can specify placeholders in code and assign the values through the USING clause like this:

    execute immediate 'select * from emp where deptno = :1' using v_deptno;
    

    Now, the statement is executed with a variable binding, which means that it is only parsed hard in the first inning. It is of the most efficcient for code that is run a lot.

    Cheers, APC

  • Question of the Clause

    Hello
    I have a query like the following.
    ------------------------------------------------
    with base as
    (
    Select date, cust_id, amount
    several tables
    Union of all the
    Select date, cust_id, amount
    several tables
    )

    Select * Basic
    where snapshot_date = July 31, 2014"
    -------------------------------------------------
    This query is too long. If I throw ' where snapshot_date = July 31, 2014 ' ' for both selects in the "-with clause", it's really fast. This is because all the tables in the db have indices on the field of snapshot_date.
    It seems that the with clause creates a view with all stereotypes, rather than just July 31, 2014. Y at - there a way to force the "-with clause" to retrieve data for only snapshot_date = July 31, 2014 ' as specified in the main query above without using where clause within the "with clause"?

    Thanks a lot to all the...

    As Gaff has suggested, I begin to believe that the WITH Clause is actually a temporary display based only on what is covered by the clause.

    Maybe it did and maybe it isn't. There is NO value to speculate unless you use this speculation to actually test your assumptions.

    In my case, there are 30 years of history.

    So why do you need to do a UNION ALL operation to get the results? Why can't simply run both queries separately?

    The optimizer does not resemble what data are used.

    More speculation on your part. I can create a simple example of the SCOTT schema on 11.2.0.1.0 vanilla that uses the index.

    create the table emp_copy1 in select * from emp;

    create the table emp_copy2 in select * from emp;

    create index emp_copy1_ndx on emp_copy1 (deptno);

    create index emp_copy2_ndx on emp_copy2 (deptno);

    explain plan for
    with base as
    (
    Select ename, empno and deptno from emp_copy1
    Union of all the
    Select ename, empno and deptno from emp_copy2
    )
    Select * base where deptno = 20;

    Select * from table (dbms_xplan.display_cursor ())

    PLAN_TABLE_OUTPUT

    SQL_ID, 77q19ypwbjkvq, number of children 0

    -------------------------------------

    with base (select empno, ename, deptno emp_copy1 Union all the)

    Select empno, ename, deptno emp_copy2) select * base where

    DEPTNO = 20

    Hash value of plan: 2111487496

    -----------------------------------------------------------------------------------------------

    | ID | Operation | Name | Lines | Bytes | Cost (% CPU). Time |

    -----------------------------------------------------------------------------------------------

    |   0 | SELECT STATEMENT |               |       |       |     4 (100) |          |

    |   1.  VIEW                         |               |    10.   330.     4 (0) | 00:00:01 |

    |   2.   UNION-ALL |               |       |       |            |          |

    |   3.    TABLE ACCESS BY INDEX ROWID | EMP_COPY1 |     5.   165.     2 (0) | 00:00:01 |

    |*  4 |     INDEX RANGE SCAN | EMP_COPY1_NDX |     5.       |     1 (0) | 00:00:01 |

    |   5.    TABLE ACCESS BY INDEX ROWID | EMP_COPY2 |     5.   165.     2 (0) | 00:00:01 |

    |*  6 |     INDEX RANGE SCAN | EMP_COPY2_NDX |     5.       |     1 (0) | 00:00:01 |

    -----------------------------------------------------------------------------------------------

    Information of predicates (identified by the operation identity card):

    ---------------------------------------------------

    4 - access ("DEPTNO" = 20)

    6 - access ("DEPTNO" = 20)

    Note

    -----

    -dynamic sample used for this survey (level = 2)

    Which show the index range scan is done for both tables. These statistics are current since Oracle collected his stats when the indexes have been built

    I think that there is no solution to this problem

    . No, unless indicate you at least a way for us to reproduce the problem.

  • Nested set tables in select query "in the clause of" take long time

    create or replace type t_circuitids is table of the varchar2 (100);

    -Under anonymous block continues to run away and never ends

    DECLARE
    v_circuitid t_circuitids;
    number of v_count;
    l_circuitids VARCHAR2 (4000)
    : = "Value1, value2, value3, value4, Value5";
    BEGIN
    -Query below converts the output concatinated with commas to the list and stores it in the nested table collection v_circuitids
    WITH an ACE
    (SELECT ',' | l_circuitids |) ',' AS circuitid
    THE DOUBLE)
    SELECT DISTINCT TRIM (SUBSTR (circuitid,
    INSTR (circuitid, "," 1, LEVEL) + 1.
    INSTR (circuitid, "," 1, LEVEL + 1)
    -INSTR (circuitid, "," 1, LEVEL)
    -1
    )
    ) cid
    LOOSE COLLECTION v_circuitid
    A
    CONNECT BY LEVEL <
    LENGTH (circuitid)
    -LENGTH (REPLACE (circuitid, ','));

    SELECT COUNT (1)
    IN v_count
    TABLE
    WHERE name IN (SELECT COLUMN_VALUE
    TABLE (v_circuitid));
    END;
    /

    -I had the question, query "SELECT COLUMN_VALUE FROM TABLE (v_circuitid)" that is used in code above is responsible for this.

    -Same code works fine in development and Test environments, but prod it continues to work on

    -I solved this problem by creating a temporary table, loading of all values in the collection in the temporary table and using this temporary table "in the clause" "

    -Can answer why his behavior like this when I use the collection where clause?

    -I use Oracle 9i

    Here is a summary of the question and the solution for this.

    -Nested type to collect multiple values

    CREATE or REPLACE the TYPE t_circuitid IS TABLE OF VARCHAR2 (100);

    Below the code will simply on the run.

    DECLARE
    v_circuitid t_circuitid;
    v_count NUMBER;
    BEGIN
    SELECT nal_name
    LOOSE COLLECTION v_circuitid
    OF fs_head
    WHERE groupid = 10;

    SELECT COUNT (1)
    IN v_count
    OF fs_attrib
    WHERE NAME IN (SELECT COLUMN_VALUE
    TABLE (v_circuitid));

    Dbms_output.put_line (v_count);
    END;
    /

    Cause:-SELECT COLUMN_VALUE TABLE (v_circuitid)); -This request is causing problem

    Why?  : - Because the CBO does not know how many lines is present in the collection, by default it takes 8168 lines

    Note:-always happens, it depends on the volume of data in the table, the path chosen by CBO. In my case, the table is huge on prod compared to DEV so he was causing a problem.

    -The following modified code works very well

    DECLARE
    v_circuitid t_circuitid;
    v_count NUMBER;
    BEGIN
    SELECT nal_name
    LOOSE COLLECTION v_circuitid
    OF fs_head
    WHERE groupid = 10;

    SELECT COUNT (1)
    IN v_count
    OF fs_attrib
    WHERE NAME IN (SELECT / * + cardinality (20 t) * /)
    COLUMN_VALUE
    TABLE (v_circuitid) t);

    Dbms_output.put_line (v_count);
    END;
    /

    Solution:-used as cardinality hint below.

    SELECT / * + cardinality (20 t) * / t COLUMN_VALUE TABLE (v_circuitid);

    Using cadinality I am saying CBO which dataset contains 20 lines or less.

    If it is version of Oracle 10 g and more, we can use below code (CARD utility).

    SELECT COLUMN_VALUE TABLE (CARD ((v_circuitid))

    For more information reach me at [email protected]

    Thank you best regards &,.

    Amarnath a. Reddy.

  • As for the Clause on Oracle 10 g db

    Hi experts,

    I had little doubt about my simple request

    When I go through the black book of Oracle for db10g article on the clause
    They stated something like this
    SELECT * FROM EMPLOYEES (EMPLOYEE_ID = '1981');
    on the clause simliar to the place where clause.

    SELECT * FROM EMPLOYEES WHERE EMPLOYEE_ID = '1981'.

    When I run this statement .it fine.

    ' using ' ON clause ' instead of ' where clause.

    He didn't accept the clause on, run the command not properly ended sql.

    where I'm not kidding...?


    Thank you & & looks
    ADF7.

    Version
    Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

    Oracle provides the clause TO specify join conditions in the SELECT statements involving multiple tables. It is independent of data types and column names. As the USING clause, the clause and NATURAL JOIN are mutually exclusive.

    In cases where the tables participating are more two CLAUSES, Oracle uses the first specification of the clause to join the two tables. He uses the second ON the specification of the clause to combine the next table with the result of the join of the first.
    The key word THERE is also used in other contexts, such as in GRANT and INDEX statements.

    Notes:

    After the keyword ON the join condition is written, in general, it can contain predicates connected with Boolean AND, OR, and NOT
    The order of the tables is not relevant
    The use of parentheses are optional in syntax, but the readability of the increases

    Syntax example:

    SELECT

    FROM TABLE_1

    JOIN TABLE_2

    ON (join condition)

    Usage example:

    The SQL query below shows the employee's name and the name of Department of their work:

    SQL > SELECT E.ENAME, D.DNAME

    EMPLOYEE E JOIN DEPT D

    WE (E.DEPTNO = D.DEPTNO)

  • How to use an index with the clause 'in '.

    Hi all

    I have a sql statement with "" * in the clause * "."

    for example:
    select emp_id from emp where ename in ("vikas", "krishna", "John", "scott");
    When I check the plan explain he uses the index here even if the statistics was entered. He always goes for the full table scan.
    There is an index created for the ename column.

    Please tell me a technique on how to make use of the index here.


    Thank you and best regards,
    Vikas Krishna

    Vikas,

    What version of Oracle you are running.
    CLAUSE IN will use the index as appropriate.
    In your example Optimizer may decide to use FTS (Full Tablle Scan) for various reasons. May be that the table is very small.
    SE for example below where he uses an index on the CLAUSE IN...
    The essential point being that I made "wide enough" table (in this case including a column of type CHAR) makes use of INDEX more effective than a FTS.

    select * from v$version where rownum < 2;
    Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
    
    create table bigt (c int, s char(100));
    
    insert into bigt select level, 'X' from dual connect by level < 501;
    
    create index bigt_in1 on bigt (c );
    
    exec dbms_stats.GATHER_TABLE_STATS('SUDHAKAR', 'BIGT');
    
    explain plan for select c,s from bigt
    where c in (1,2,3,43,5);
    
    select * from table(dbms_xplan.display);
    
    PLAN_TABLE_OUTPUT
    
    Plan hash value: 238667275
    
    -----------------------------------------------------------------------------------------
    | Id  | Operation                    | Name     | Rows  | Bytes | Cost (%CPU)| Time     |
    -----------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT             |          |     5 |   520 |     3   (0)| 00:00:01 |
    |   1 |  INLIST ITERATOR             |          |       |       |            |          |
    |   2 |   TABLE ACCESS BY INDEX ROWID| BIGT     |     5 |   520 |     3   (0)| 00:00:01 |
    |*  3 |    INDEX RANGE SCAN          | BIGT_IN1 |     5 |       |     2   (0)| 00:00:01 |
    -----------------------------------------------------------------------------------------
    
    Predicate Information (identified by operation id):
    ---------------------------------------------------
    
       3 - access("C"=1 OR "C"=2 OR "C"=3 OR "C"=5 OR "C"=43)
    

    VR,
    Sudhakar B.

  • Procedure to run pubs block

    Hi all.
    I need to execute the pl/sql procedure to run pubs block.
    I'm doing it with exec but in error:

    Start
    RUN IMMEDIATELY.
    exec FillTestForOperation';
    end;
    /

    Start
    *
    ERROR on line 1:
    ORA-00900: invalid SQL statement
    ORA-06512: at line 2

    Is it possible to do?
    begin
      EXECUTE IMMEDIATE 'begin FillTestForOperation; end';
    end;
    

    or why not simply...

    begin
      FillTestForOperation;
    end;
    
  • With the clause of DML (DEC/insert/insert-all)

    Hello


    I have tables t1, t2, t3, t4

    with w
    (
    Select t1.* from t1, t2
    where t1.c1 = t2.c1
    and t1.c2 = t2.c2
    )


    I need to create or insert data in new tables n1 and n2
    Like this..

    Insert into n1
    Select * from w, t3
    where w.c1 = t3.c1

    Insert into n2
    Select * from w, t4
    where w.c2 = t4.c2
    ----

    I will make references the object 'w' several times.
    My concern is because the inserts above are run independently in the same session, the oracle executes the
    with the clause for each reference or runs one time?

    Essentially of iam looking for an insert-all statement
    where it inserts data into multiple tables from target
    something like that...


    Insert into n1
    When
    Select * from w, t3
    where w.c1 = t3.c1
    Insert into n2
    When
    Select * from w, t4
    where w.c1 = t4.c1
    with w
    (
    Select t1.* from t1, t2
    where t1.c1 = t2.c1
    and t1.c2 = t2.c2
    )

    ----
    Usually, I'm doing my basic work before posting on oracle forums, currently iam unable to connect to one
    Oracle sessions. Can someone help me?


    Thanks in advance.

    If your application will have the same number and type of columns, then you can do something like that.

    SQL> create table t1
      2  as
      3  select level no, 'karthick' name
      4    from dual
      5  connect by level <= 5
      6  /
    
    Table created.
    
    SQL> create table t2
      2  as
      3  select no, 'vimal' name
      4    from t1
      5  /
    
    Table created.
    
    SQL> create table t3
      2  as
      3  select no, 'vijay' name
      4    from t1
      5  /
    
    Table created.
    
    SQL> create table t4
      2  as
      3  select no, 'subha' name
      4    from t1
      5  /
    
    Table created.
    
    SQL> create table n1
      2  as
      3  select * from t1 where 1=2
      4  /
    
    Table created.
    
    SQL> create table n2
      2  as
      3  select * from t1 where 1=2
      4  /
    
    Table created.
    
    SQL> insert when view_name = 'v1' then
      2             into n1 values (no, name)
      3         when view_name = 'v2' then
      4                     into n2 values (no, name)
      5  with v
      6  as
      7  (
      8     select t1.*
      9       from t1, t2
     10      where t1.no = t2.no
     11  ),
     12  v1
     13  as
     14  (  select t3.*, 'v1' view_name
     15       from v, t3
     16      where v.no = t3.no
     17  ),
     18  v2
     19  as
     20  (  select t4.*, 'v2' view_name
     21       from v, t4
     22      where v.no = t4.no
     23  )
     24  select * from v1
     25  union all
     26  select * from v2
     27  /
    
    10 rows created.
    
    SQL> select * from n1
      2  /
    
            NO NAME
    ---------- --------
             1 vijay
             2 vijay
             3 vijay
             4 vijay
             5 vijay
    
    SQL> select * from n2
      2  /
    
            NO NAME
    ---------- --------
             1 subha
             2 subha
             3 subha
             4 subha
             5 subha
    
  • WITH THE CLAUSE DOES NOT WORK

    Hello everyone,
    I have the suite Oracle version:

    SQL & gt; selection of version of $ v; *

    BANNER
    ----------------------------------------------------------------
    Oracle9i Enterprise Edition Release 9.2.0.8.0 - 64 bit Production
    PL/SQL Release 9.2.0.8.0 - Production
    CORE Production 9.2.0.8.0
    AMT for Solaris: 9.2.0.8.0 - Production Version
    NLSRTL Version 9.2.0.8.0 - Production

    But when I try to run a query with * 'with the clause"* it gives following error:

    SQL & gt; with sam as (select from asap.triangular_reco_aug) *.
    SP2-0734: beginning of unknown command «with sam a...» "- rest of line is ignored.
    SQL & gt;

    Could someone please why this is happening?

    What is your version of SQL * more? If you are using a version earlier than 9.2 then it is probably intercept the syntax error before it happens even to the database that supports.

  • I don't get the 'run' button in the ' download free firefox "so I can't start the download of Firefox

    I have Windows Vista on my laptop. I went the wesite Firefox and clicked on "Download Firefox. An open page containing the 3 steps to download Firefox. The first step was told to click "run" button but this page was not "run" button and the other option "Click here" led me to the previous page that had the option 'Download for free' that got returned to the page 3 steps as described above. It's a vicious cycle that does not allow me to start the download process.

    Try: http://www.mozilla.org/en-US/firefox/all.html

    Thank you

  • CPU runs at half the frequency in Satellite

    Not sure if it is a problem, but the CPU runs at half the frequency. I put the high performance plan and still the same. I think it should work at full power.

    I also tried to disable the CPU power option in the BIOS and nothing helped.
    To monitor the use CPU - Z and Speccy.

    What you think about this?
    Is it normal?

    Hello

    The Intel CPU supports the Intel Turbo Boost technology
    Dynamically, this Intel Turbo Boost technology increases the frequency of the processor as needed by taking advantage of thermal and power margin to give a burst of speed when you need it and increase energy efficiency when you don t.

    The CPU also supports Enhanced Intel SpeedStep technology

    Enhanced Intel SpeedStep technology is a means of which allows high performance while meeting the needs of conservation of energy of advanced mobile systems. Conventional Intel SpeedStep® Technology puts both voltage and frequency in tandem between high and low levels in response to the processor load. Enhanced Intel SpeedStep® technology is based on this architecture using design strategies such as the separation between the voltage and the frequency changes and clock partitioning and recovery.

  • My macbook air running hot and the battery drains quickly can help you with this problem?

    My macbook air running hot and the battery drains fast is a 13 ", at the beginning of 2014.  Processor 1.4 GHz intel core 15Can you help with this problem?

    Apps can affect the performance of Mac, battery, temperature and fan activity - Apple Support

  • Firefox continues to run even after the release in Manager Windows tasks and has about as much memory to affect other applications

    Firefox continues to run even after the release in Manager Windows tasks and has about as much memory to affect other applications. Firefox.exe must be completed manually in Windows Task Manager. Is there a software patch that will force the release of memory and all the resources of the computer that was using Firefox, when it is finished?

    This has happened

    A few times a week

    == I see only the program in the Manager of tasks over the past months but the problem could took place for more

    See this:
    https://support.Mozilla.com/en-us/KB/Firefox+hangs#Hang_at_exit

  • Satellite M70-360: CEekey.eke can not run because its the missing dll

    I accidently deleted the ekecioctl.dll and now whenever I start my laptop (Satellite M70-360) I get an error message saying that CEekey.eke can not run because its the missing dll. Anyone know where I can download the dll?

    Thank you

    Hello

    The CEekey.exe seems to be part of the Toshiba E - key utility.
    Therefore, you should try to reinstall this utility to obtain the keys working again.

    Another clue; have you tried to restore the operating system to the early time point?
    XP supports the System Restore tool. You can easily put the BONE at an early stage and the E key should work again I hope ;)

  • I want to buy an iPad 2 Air and run Hema maps on it - Hema Explorer and 4WD Hema maps. Can I run these on the iPad 2 to Air EVERYWHERE in Australia as he claims that the iPAD has 'Assisted GPS and GLONASS. I want to use it for travel in the outback

    I want to buy an iPad 2 Air and run Hema maps on it - Hema Explorer and 4WD Hema maps. Can I run these on the iPad 2 to Air EVERYWHERE in Australia because it indicates that the iPAD has 'Assisted GPS and GLONASS' or do I need a SIM card as well. I want to use it for travel in the outback.

    Only if they are available in the iTunes App Store.

Maybe you are looking for