Insert multiple values

CREATE or REPLACE TRIGGER dept_hist_trigger BEFORE delete or update ON dept FOR EACH ROW
BEGIN
INSERT INTO dept_hist values (:old.deptno,:old.dname,:old.loca);
END;
i have created a trigger like above..
but  my requirement is i want to insert 180 columns....
is there any best way to do ..

>
is there any best way to do
>
The best way is to name all the columns. There is nothing like old.* that you can use.
G.

Similar Messages

  • Problem In Inserting Multiple Values In Ztable

    Hi,
    I had developed a table in which i am inserting the data from the BSEG table and the problem is if there are multiple values wr.t. GL AAccount ID(HKONT) it is picking up only the last value of it as i want to store all of them.
    I had searched in SDN first but not able to get the desierd help.
    Here is the code which i had developed for it..
    Report ztest.
    TABLES : BSEG.
    TYPES : BEGIN OF ITAB,
            MANDT TYPE BSEG-MANDT ,  "client"
            BUKRS TYPE BSEG-BUKRS,   "company code"
            GJAHR TYPE BSEG-GJAHR,   "fiscal Year"
            HKONT TYPE BSEG-HKONT,   "G/L account No"
            SHKZG TYPE BSEG-SHKZG,   "Debit/ Credit Indicator"
            TAMT   TYPE I,
            END OF ITAB.
    DATA : W_ITAB TYPE ITAB ,
           T_ITAB TYPE ITAB OCCURS 0.
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE T1.
    SELECT-OPTIONS : PBUKRS FOR BSEG-BUKRS, PGJAHR FOR BSEG-GJAHR,PVALUT FOR BSEG-VALUT.
    SELECTION-SCREEN END OF BLOCK B1.
    DATA  :  BEGIN OF itab1 OCCURS 0.
              INCLUDE STRUCTURE Ztab21.
    DATA  :   END OF itab1.
    SELECT MANDT BUKRS GJAHR HKONT SHKZG PSWBT
           FROM BSEG
           INTO TABLE itab1
      WHERE BUKRS IN PBUKRS AND GJAHR IN PGJAHR AND VALUT IN PVALUT.
    SORT ITAB1 BY HKONT.
    LOOP AT ITAB1.
    INSERT INTO ZTAB21 VALUES itab1.
    WRITE:/ ITAB1-HKONT,ITAB1-SHKZG,ITAB1-TAMT.
    ENDLOOP.

    Hi,
    First of all , dont write database update statements inside LOOP
    SELECT MANDT BUKRS GJAHR HKONT SHKZG PSWBT
           FROM BSEG
           INTO TABLE itab1
      WHERE BUKRS IN PBUKRS AND GJAHR IN PGJAHR AND VALUT IN PVALUT.
    SORT ITAB1 BY HKONT.
    LOOP AT ITAB1.
    INSERT INTO ZTAB21 VALUES itab1.   " should be before loop
    WRITE:/ ITAB1-HKONT,ITAB1-SHKZG,ITAB1-TAMT.
    ENDLOOP.
    For using same itab for direct insert, Custom table ZTAB21 should have field names same as BSEG.
    Else, you have to write as below:
    LOOP AT ITAB1.
    wa_ztab21-tfield1 = itab1-bukrs.
    append wa_ztab21 to i_ztab21.
    WRITE:/ ITAB1-HKONT,ITAB1-SHKZG,ITAB1-TAMT.
    ENDLOOP.
    MODIFY ZTAB21 FROM TABLE i_ztab21.
    Regards,
    Nisha Vengal.

  • How do I insert multiple values into different fields in a stored procedure

    I am writing a Stored Procedure where I select data from various queries, insert the results into a variable and then I insert the variables into final target table. This works fine when the queries return only one row. However I have some queries that return multiple rows and I am trying to insert them into different fields in the target table. My query is like
    SELECT DESCRIPTION, SUM(AMOUNT)
    INTO v_description, v_amount
    FROM SOURCE_TABLE
    GROUP BY DESCRIPTION;
    This returns values like
    Value A , 100
    Value B, 200
    Value C, 300
    The Target Table has fields for each of the above types e.g.
    VALUE_A, VALUE_B, VALUE_C
    I am inserting the data from a query like
    INSERT INTO TARGET_TABLE (VALUE_A, VALUE_B, VALUE_C)
    VALUES (...)
    How do I split out the values returned by the first query to insert into the Insert Statement? Or do I need to split the data in the statement that inserts into the variables?
    Thanks
    GB

    "Some of the amounts returned are negative so the MAX in the select statement returns 0 instead of the negative value. If I use MIN instead of MAX it returns the correct negative value. However I might not know when the amount is going to be positive or negative. Do you have any suggestions on how I can resolve this?"
    Perhaps something like this could be done in combination with the pivot queries above, although it seems cumbersome.
    SQL> with data as (
      2        select  0 a, 0 b,  0 c from dual   -- So column a has values {0, 1, 4},
      3  union select  1 a, 2 b, -3 c from dual   --    column b has values {0, 2, 5},
      4  union select  4 a, 5 b, -6 c from dual ) --    column c has values {0, -3, -6}.
      5  --
      6  select  ( case when max.a > 0 then max.a else min.a end) abs_max_a
      7  ,       ( case when max.b > 0 then max.b else min.b end) abs_max_b
      8  ,       ( case when max.c > 0 then max.c else min.c end) abs_max_c
      9  from    ( select  ( select max(a) from data ) a
    10            ,       ( select max(b) from data ) b
    11            ,       ( select max(c) from data ) c
    12            from      dual ) max
    13  ,       ( select  ( select min(a) from data ) a
    14            ,       ( select min(b) from data ) b
    15            ,       ( select min(c) from data ) c
    16            from      dual ) min
    17  /
    ABS_MAX_A  ABS_MAX_B  ABS_MAX_C
             4          5         -6
    SQL>

  • How to insert multiple values from a single LOV box...?(cont)

    Hi..I have a medical form and under the conclusions box, I have set up a LOV with various values. That part works fine.
    The thing is I do not want to pick a single value. The format which I write in the conclusions in that box is
    1. "............"
    2. " "
    3...etc...
    But when I go to choose the 2nd value, it replaces the first one I had inserted. Any tips please??

    "My way", should have done exactly that. Every time you open the lov and choose a value it should be aapended to the already existing value in the textfield (assuming taht the length of the textfield is long enough)."
    -Well thats the thing, If I try to add more than one value into ONE text field when I open up the LOV..it just replaces the first value with teh second value. Right now wihtout the LOV this is the format it gets stored into the database. The conclusions are typed in manually and when i query from sql plus it comes the way I typed it in. For example:
    1. Mild concentric LVH
    2. Normal LV systolic function ; EF 75 %
    3. Diastolic dysfunction
    I just copy/pasted that from sql. This is saved in a column in a table named ProcedureSummary. I want to insert values exactly this way into one field. Except when i do that currently with the LOV, it replaces the old value with a new value.
    I hope i make sense, sorry for the bother!

  • Submit multiple values

    Hi all,
    For my school project i'm building a student grade application using Servlets and JSP.
    Teachers can add grades for students.
    When a teacher chooses an subject, fo example math, a list with all the students of the class is displayed.
    After every name, there is an input field.
    The teacher can add or update grades for the students.
    In my form i have a loop which prints a input for the grade and an hidden input for the user id.
    What is the best way to store the data in the database with my servlet?
    When i submit the grades i want to know what grade belongs to which user id.
    And how can i check if there is already a grade for that user, update.
    I got it working, but i just want to make it work the right way.
    Here is my jsp:
    <%Iterator itr;%>
    <% List data= (List)session.getAttribute("studentlist");
            for (itr=data.iterator(); itr.hasNext(); )
                    String value=(String)itr.next();
                    String value2=(String)itr.next();
    %>
    <tr>
        <td><label for="student"><%=value%></label></td>
         <td><input type="hidden" name="student" value="<%=value2%>" /><td>
        <td><input type="text" name="grade" id="<%=value%>" /></td>
    </tr>
    <%}%>Here is my Servlet:
    String[] grades = request.getParameterValues("grade");
                    String[] student = request.getParameterValues("student");
                    for(int i=0;i<student.length;i++){
                        strQuery = "insert " +
                                    "into " +
                                    "cijfer " +
                                    "values(" +
                                    "null,"+grades[i]+",NOW(),1,'"+SubjectId+"',"+student[i]+")";It's not just about inserting multiple values, but inserting mltiple values for multiple students :)
    I just want to do it the right and clean way.
    Can i get some help please?
    Thnx in advance.
    Edited by: vishantpoeran on Apr 12, 2010 2:21 PM

    Hello,
    Check the below code.
    DATA: t_sel TYPE TABLE OF rsparams with header line.
    t_sel-selname = 'SO_OBJ_N'.
    t_sel-kind = 'P'.
    t_sel-sign = 'I'.
    t_sel-option = 'EQ'.
    t_sel-low = 'YCRM01_REP_0590235 '.
    APPEND T_SEL.
    CLEAR T_SEL.
    t_sel-selname = 'P_ONLYNU'.
    t_sel-kind = 'P'.
    t_sel-sign = 'I'.
    t_sel-option = 'EQ'.
    t_sel-low = SPACE.
    APPEND T_SEL.
    CLEAR T_SEL.
    t_sel-selname = 'P_ONLYTA'.
    t_sel-kind = 'P'.
    t_sel-sign = 'I'.
    t_sel-option = 'EQ'.
    t_sel-low = SPACE.
    APPEND T_SEL.
    CLEAR T_SEL.
    t_sel-selname = 'P_NOTMP'.
    t_sel-kind = 'P'.
    t_sel-sign = 'I'.
    t_sel-option = 'EQ'.
    t_sel-low = 'X'.
    APPEND T_SEL.
    CLEAR T_SEL.
    t_sel-selname = 'P_NOTMP'.
    t_sel-kind = 'P'.
    t_sel-sign = 'I'.
    t_sel-option = 'EQ'.
    t_sel-low = 'X'.
    APPEND T_SEL.
    CLEAR T_SEL.
    t_sel-selname = 'P_SHPR'.
    t_sel-kind = 'P'.
    t_sel-sign = 'I'.
    t_sel-option = 'EQ'.
    t_sel-low = 'LSVIM*'.
    APPEND T_SEL.
    CLEAR T_SEL.
    t_sel-selname = 'P_VIEW'.
    t_sel-kind = 'P'.
    t_sel-sign = 'I'.
    t_sel-option = 'EQ'.
    t_sel-low = 'X'
    APPEND T_SEL.
    CLEAR T_SEL.
    t_sel-selname = 'P_UPLOAD'.
    t_sel-kind = 'P'.
    t_sel-sign = 'I'.
    t_sel-option = 'EQ'.
    t_sel-low = 'X'.
    APPEND T_SEL.
    CLEAR T_SEL.
    submit ZRSUNISCAN_FINAL_UC  WITH SELECTION-TABLE T_SELAND
    RETURN.
    tHANKS.
    rAMYA.

  • How to insert or update multiple values into a records of diff fields

    Hai All
    I have to insert or update or multiple values into a single records of diff fields from one to another table.
    Table1 has 3 fields
    Barcode bardate bartime
    0011 01-02-10 0815
    0022 01-02-10 0820
    0011 01-02-10 1130
    0022 01-02-10 1145
    0011 01-02-10 1230
    0022 01-02-10 1235
    0011 01-02-10 1645
    0022 01-02-10 1650
    these are the times that comes in at 0815 and goes break at 1130 and comes in at 1230 and goes home at 1645
    from these table i have to insert into another table called table2
    and the fields are barcode, date,timein intrin,introut,tiomout
    And the output want to like this
    barcode timein intrin introut timeout date
    0011 0815 1130 1230 1645 01-02-10
    0022 0820 1145 1235 1650 01-02-10
    If any give some good answer it will be help full..
    Thanks & Regards
    Srikkanth.M

    SQL> with table1 as (
      2  select '0011' Barcode,'01-02-10' bardate,'0815' bartime from dual union
      3  select '0022','01-02-10','0820' from dual union
      4  select '0011','01-02-10','1130' from dual union
      5  select '0022','01-02-10','1145' from dual union
      6  select '0011','01-02-10','1230' from dual union
      7  select '0022','01-02-10','1235' from dual union
      8  select '0011','01-02-10','1645' from dual union
      9  select '0022','01-02-10','1650' from dual
    10  )
    11  select barcode, bardate,
    12         max(decode(rn,1,bartime,null)) timein,
    13         max(decode(rn,2,bartime,null)) intrin,
    14         max(decode(rn,3,bartime,null)) introut,
    15         max(decode(rn,4,bartime,null)) timeout from (
    16                          select barcode, bardate, bartime,
    17                                 row_number() over (partition by barcode, bardate
    18                                                    order by bartime) rn
    19                            from table1)
    20  group by barcode, bardate;
    BARC BARDATE  TIME INTR INTR TIME
    0011 01-02-10 0815 1130 1230 1645
    0022 01-02-10 0820 1145 1235 1650Max
    http://oracleitalia.wordpress.com

  • To insert multiple rows by getting the values from the user

    Hi
    I want to insert multiple rows into a table using user given values dynamically.
    I am a beginner to PL/SQL. Below code is part of my big code. A_row_insert is 2 and A_count is 1 (initially). While i execute , it asks for input only once and insert the same data 2 times. I want to enter two different rows. Please guide/advise me on this.
    while (A_count<=A_row_insert) loop
    dbms_output.put_line('Enter the value  for the row#'||A_count||' of the table '||v_req_tab_name||':');
    begin
    INSERT INTO customers (
    customer# ,
    lastname ,
    firstname ,
    address ,
    city ,
    state ,
    referred ,
    region
    +)+
    VALUES
    +(+
    +&customer,+
    +'&lastname' ,+
    +'&firstname' ,+
    +'&address' ,+
    +'&city' ,+
    +'&state' ,+
    +&referred ,+
    +'&region'+
    +);+
    end;
    A_count := A_count 1;+
    end loop;
    regards
    Sakthivel

    hi,
    You need to write a procedure and call it from front end for n number of time..... check the parameters you need to pass to execute the procedure.... try given sample....
    CREATE OR REPLACE PROCEDURE InsertData(i_code IN VARCHAR2,i_code_desc IN VARCHAR2,i_code_type IN VARCHAR2)
    AS
    BEGIN
         INSERT INTO CODE_MASTER (code,code_desc,code_type)
    VALUES(i_code,i_code_desc,i_code_type);
    EXCEPTION WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE ( 'Error during Insert code - '||i_code );
    END;
    Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
    With the Partitioning, OLAP and Data Mining options
    exec InsertData('code1','desc1','type1');
    Thnx MB

  • Returning multiple values from a table

    Hi there i am working on a bit of sql which will return values when they exist in a table.
    The code I have returns the correct value when there is only one entry in the tbl_studentmodules table, as soon as there is more than one entry in this table it displays no rows at all :(.
    Can anyone point out how I go about returning multiple values?
                 select modulename from tbl_modulefeedback
    where 1 = (select count(*) from tbl_studentmodules
           where upper(:APP_USER) = upper(student_id))
    and 1 = (select count(*) from tbl_modulefeedback, tbl_studentmodules
          where tbl_modulefeedback.modulecode = tbl_studentmodules.modulecode)Thanks in advance!
    Ashleigh

    I'm not quite sure I understand what you are looking for, but I think a simple join may be what you need. something like:
    select modulename
    from tbl_modulefeedback mfb
       join tbl_studentmodules sm
          on mfb.modulecode = sm.modulecode
    where upper(sm.student_id) = upper(:APP_USER)This will return the module name for all modules that the given student has provided feeedback for. If there is a possibility that a student/module combination could appear in tbl_studentmodules more than once, something like this might be better to show the modulename only once.
    select modulename
    from tbl_modulefeedback mfb
    where mfb.modulecode in (select sm.modulecode
                             from tbl_studentmodules sm
                             where mfb.modulecode = sm.modulecode and
                                   upper(sm.student_id) = upper(:APP_USER))If this is not what you want, then post some sample data (preferrable in the form of insert statements or a with clause) and the results you expect rom that sample data.
    John

  • Return multiple values from a function to a SELECT statement

    I hope I've provided enough information here. If not, just let me know what I'm missing.
    I am creating a view that will combine information from a few tables. Most of it is fairly straightforward, but there are a couple of columns in the view that I need to get by running a function within a package. Even this is fairly straightforward (I have a function named action_date in a package called rp, for instance, which I can use to return the date I need via SELECT rp.action_date(sequence_number).
    Here's the issue: I actually need to return several bits of information from the same record (not just action_date, but also action_office, action_value, etc.) - a join of the tables won't work here as I'll explain below. I can, of course, run a separate function for each statement but that is obviously inefficient. Within the confines of the view select statement however, I'm not sure how to return each of the values I need.
    For instance, right now, I have:
    Table1:
    sequence_number NUMBER(10),
    name VARCHAR(30),
    Table2:
    Table1_seq NUMBER(10),
    action_seq NUMBER(10),
    action_date DATE,
    action_office VARCHAR(3),
    action_value VARCHAR(60),
    I can't simply join Table1 and Table2 because I have to do some processing in order to determine which of the matching returned rows I actually need to select. So the package opens a cursor and processes each row until it finds the one that I need.
    The following works but is inefficient since all of the calls to the package will return columns from the same record. I just don't know how to return all the values I need into the SELECT statement.
    CREATE VIEW all_this_stuff AS
    SELECT sequence_number, name,
    rp.action_date(sequence_number) action_date,
    rp.action_office(sequence_number) action_office,
    rp.action_value(sequence_number) action_value
    FROM table1
    Is there a way to return multiple values into my SELECT statement or am I going about this all wrong?
    Any suggestions?
    Thanks so much!

    Hi,
    What you want is a Top-N Query , which you can do using the analytic ROW_NUMBER function in a sub-query, like this:
    WITH     got_rnum     AS
         SELECT     action_seq, action_dt, action_office, action_type, action_value
         ,     ROW_NUMBER () OVER ( ORDER BY  action_date
                                   ,            action_seq
                             ,            action_serial
                           ) AS rnum
         FROM     table2
         WHERE     action_code     = 'AB'
         AND     action_office     LIKE 'E'     -- Is this right?
    SELECT     action_seq, action_dt, action_office, action_type, action_value
    FROM     got_rnum
    WHERE     rnum     = 1
    ;As written, this will return (at most) one row.
    I suspect you'll really want to get one row for each group , where a group is defined by some value in a table to which you're joining.
    In that case, add a PARTITION BY clause to the ROW_NUMBER function.
    If you'd post a little sample data (CREATE TABLE and INSERT statements), I could show you exactly how.
    Since I don't have your tables, I'll show you using tables in the scott schema.
    Here's a view that has data from the scott.dept table and also from scott.emp, but only for the most senior employee in each department (that is, the employee with the earliest hiredate). If there happens to be a tie for the earliest hiredate, then the contender with the lowest empno is chosen.
    CREATE OR REPLACE VIEW     senior_emp
    AS
    WITH     got_rnum     AS
         SELECT     d.deptno
         ,     d.dname
         ,     e.empno
         ,     e.ename
         ,     e.hiredate
         ,     ROW_NUMBER () OVER ( PARTITION BY  d.deptno
                                   ORDER BY          e.hiredate
                             ,                e.empno
                           ) AS rnum
         FROM     scott.dept     d
         JOIN     scott.emp     e     ON     d.deptno     = e.deptno
    SELECT     deptno
    ,     dname
    ,     empno
    ,     ename
    ,     hiredate
    FROM     got_rnum
    WHERE     rnum     = 1
    SELECT     *
    FROM     senior_emp
    ;Output:
    .    DEPTNO DNAME               EMPNO ENAME      HIREDATE
            10 ACCOUNTING           7782 CLARK      09-JUN-81
            20 RESEARCH             7369 SMITH      17-DEC-80
            30 SALES                7499 ALLEN      20-FEB-81 
    By the way, one of the conditions in the query you posted was
    action_office     LIKE 'E'which is equivalent to
    action_office     = 'E'(LIKE is always equivalent to = if the string after LIKE doesn't contain any wildcards.)
    Did you mean to say that, or did you mean something like this:
    action_office     LIKE 'E%'instead?

  • Multiple values from a single function to be used SQL

    I have some pl/sql code that calculates multiple values in the same procedure (multiple out parameters).
    Now I want to use these separate values in an SQL select.
    One way to do it, is creating functions for each separate value.
    Performance wise, I don't want to do so.
    I created an object type with 9 number values.
    A function returns the object type and I select it in a subquery.
    The outer query then selects 3 different values from the object in the subquery.
    Unfortunately, a query with 3 rows still results in the function being called 9 times (3 row x 3 values).
    Is there a way to force the object function being called just once per row ?
    Or is there an alternative way?
    I've tried pipelined functions but then I have trouble with the input values for the function that should be taken from another select.
    result will be a view with a key value and the calculated values
    SELECT key_value, calculated_value1, calculated_value2, calculated_value3
    FROM SOME_TABLE

    DROP TABLE TBL
    CREATE TABLE TBL(
    ID NUMBER(10),
    CODE VARCHAR2(20),
    PARENT NUMBER(10)
    INSERT INTO TBL VALUES(1,'A',1);
    INSERT INTO TBL VALUES(2,'B',1);
    INSERT INTO TBL VALUES(3,'C',1);
    INSERT INTO TBL VALUES(4,'D',2);
    INSERT INTO TBL VALUES(5,'E',2);
    INSERT INTO TBL VALUES(6,'F',2);
    CREATE OR REPLACE PACKAGE pck_test IS
    TYPE t_rec IS RECORD(
    value1 NUMBER,
    value2 NUMBER,
    value3 NUMBER);
    TYPE t_tab IS TABLE OF pck_test.t_rec;
    FUNCTION calculate(i_id NUMBER) RETURN pck_test.t_tab
    PIPELINED;
    END pck_test;
    CREATE OR REPLACE PACKAGE BODY pck_test IS
    FUNCTION calculate(i_id NUMBER) RETURN pck_test.t_tab
    PIPELINED IS
    v_return t_rec;
    BEGIN
    v_return.value1 := 1 * i_id;
    v_return.value2 := 2 * i_id;
    v_return.value3 := 3 * i_id;
    PIPE ROW(v_return);
    RETURN;
    END;
    END pck_test;
    now I can use the pipelined function:
    SELECT 1 id, x.value1, x.value2, x.value3
    FROM TABLE(pck_test.calculate(1)) x
    id is hard-coded in this select with value 1
    I want to use TBL.id as the argument for the calculate function.
    I don't know how. I tried this...
    SELECT parent, ID, multi_values.value1, multi_values.value2, multi_values.value3
    FROM (
    SELECT ID, TABLE(pck_test.calculate(ID)) multi_values
    FROM TBL)
    Then the SELECT will be stored as a view.
    In an application, the view will be queried:
    select value1, value2, value3
    from view
    where parent = :parameter

  • Multiple values from a sequence ?

    Hi all,
    how can i guarantee that a user gets multiple values from a sequence in a row? (for example : 100, 101 ,102, 103)
    It should not happened that another user gets a sequence value such as 102.
    Can i solve this with sequences or do i need a table?
    thanks

    Why would you want to do this? The easiest way of implementing it is through a code control table, which can be locked by user 1. However, this is only easy for you, not for your users. Consider: user 2 cannot do their work until user 1 commits. Note that if user 1 inserts three records (101, 102, 103) and then commits, user 2 can grab 104. User 1 can't insert any more records until user 2 commits. At which point user 1 can have 105.
    If you really have a business need for such a palaver then you ought to implement it through user-owned objects - sequences or tables - with each user assigned a unique range e.g. user 1 gets 101 to 150, user 2 gets 151 to 200. When a user exhausts their range give them a new chunk. This is an admin overhead and it also means that you can no longer guarantee that ID 157 is more recent than 133.
    To repeat: why do you want to do this?
    Rgds, APC

  • Any way to pass Multiple Values for a single Label in the Parameter?

    I have a Report that Contains 2 Parameters, @Customer & @Area. When trying to set up the Available Values for @Area, I'm having issues using multiple values for one Label, i.e. = "4006" Or "4610"
    One of the Filters in the Report is an Operation number, which is the [OPERATION] field, which is setup as a filter on the Tablix referencing the @Area parameter. 
    PROBLEM: I cannot retrieve any data when trying to use the ‘Or’ Operator here. If I simply put “4006” or “4610” I retrieve data, but when trying to combine it returns no data.
    Example, I need to allow a user to select ‘Chassis Incoming’, which would include data from Operations 4006 & 4610.
    QUESTION:
    Any way to pass Multiple Values for a single Label in the Parameter?
    I realize the typical solution may be to use ‘Multi-Value’ selection, but in this case we want the User to select the Area and the multiple values for Filtering will be automatically determined for them. Otherwise, they are subject to not getting
    it correct.
    I have tried several different ways, such as =”4006” Or “4610”, =(“4006”, “4610”), = In(“4006”, “4610”), etc….
    Note: We are using Report Builder 3.0

    Based on my experience, there's no way to 'intercept' the query that gets passed back to SQL Server, so a Split wouldn't work.
    Try creating either a function or stored procedure using the code below (compliments to
    http://www.dotnetspider.com/resources/4680-Parse-comma-separated-string-SQL.aspx) to parse the string: 
    CREATE FUNCTION dbo.Parse(@Array VARCHAR(1000), @Separator VARCHAR(10))
    RETURNS @ResultTable TABLE (ParseValue VARCHAR(100))AS
    BEGIN
    DECLARE @SeparatorPosition INT
    DECLARE @ArrayValue VARCHAR(1000)
    SET @Array = @Array + @Separator
    WHILE PATINDEX('%' + @Separator + '%' , @Array) <> 0
    BEGIN
    SELECT @SeparatorPosition = PATINDEX('%' + @Separator + '%', @Array)
    SELECT @ArrayValue = LEFT(@Array, @SeparatorPosition - 1)
    INSERT @ResultTable VALUES (CAST(@ArrayValue AS VARCHAR))
    SELECT @Array = STUFF(@Array, 1, @SeparatorPosition, '')
    END
    RETURN
    END
    Once created you can do things like this:
    SELECT * FROM Parse('John,Bill,David,Thomas', ',')
    SELECT * FROM (SELECT 'John' AS TestName union select 'David' AS TestName) AS Main
    WHERE TestName IN (SELECT ParseValue FROM dbo.Parse('John,Bill,David,Thomas', ','))
    This is what your SQL query would probably look like:
    SELECT OperationID, OperationName FROM dbo.Operations
    WHERE AreaID IN (SELECT ParseValue FROM dbo.Parse(@Area, ','))
    You may need to fiddle around with the Separator depending on whether SQL Server inserts a space between the comma and next value.

  • Dynamic sql reurns no data when multiple values are passed.

    (Dynamic sql returns no data when multiple values are passed.)
    Hi,
    While executing the below dynamic sql in the procedure no data is returned when it has multiple input values.
    When the input is EMPID := '1'; the procedure works fine and returns data.Any suggestion why the procedure doen't works when input as EMPID := '1'',''2'; is passed as parameter?
    =======================================================
    create or replace PROCEDURE TEST(EMPID IN VARCHAR2, rc OUT sys_refcursor)
    IS
    stmt VARCHAR2(9272);
    V_EMPID VARCHAR2(100);
    BEGIN
    V_EMPID :=EMPID;
    stmt := 'select * from TEST123 where Empid is NOT NULL';
    IF V_EMPID <> '-1' THEN
    stmt := stmt || ' and Empid in (:1)';
    ELSE
    stmt := stmt || ' and -1 = :1';
    END IF;
    OPEN rc FOR stmt USING V_EMPID;
    END Z_TEST;
    ============================================================
    Script for create table
    ==================================================================
    CREATE TABLE TEST123 (
    EMPID VARCHAR2(10 BYTE),
    DEPT NUMBER(3,0)
    ===========================================
    Insert into PDEVUSER.TEST123 (EMPID,DEPT) values ('1',20);
    Insert into PDEVUSER.TEST123 (EMPID,DEPT) values ('2',10);
    Insert into PDEVUSER.TEST123 (EMPID,DEPT) values ('3',30);
    Insert into PDEVUSER.TEST123 (EMPID,DEPT) values ('3',30);
    Insert into PDEVUSER.TEST123 (EMPID,DEPT) values ('2',10);
    =============================================
    Select * from TEST123 where Empid in (1,2,3)
    EMPID DEPT
    1     20
    2     10
    3     30
    3     30
    2     10
    ===================================================================
    Any suggestion why the procedure doen't works when input EMPID := '1'',''2';?
    Thank you,

    The whole scenario is a little strange. When I tried to compile your procedure it couldn't compile, but I added the missing info and was able to get it compiled.
    create or replace PROCEDURE TEST (EMPID IN VARCHAR2, rc OUT sys_refcursor)
    IS
      stmt        VARCHAR2 (9272);
      V_EMPID     VARCHAR2 (100);
    BEGIN
      V_EMPID := EMPID;
      stmt := 'select * from TEST123 where Empid is NOT NULL';
      IF V_EMPID = '-1' THEN
        stmt := stmt || ' and Empid in (:1)';
      ELSE
        stmt := stmt || ' and -1 = :1';
      END IF;
      OPEN rc FOR stmt USING V_EMPID;
    END;If you pass in 1 as a parameter, it is going to execute because the statement that it is building is:
    select * from TEST123 where Empid is NOT NULL and -1 = 1Although the syntax is valid -1 will never equal 1 so you will never get any data.
    If you pass in 1,2 as a parameter then it is basically building the following:
    select * from TEST123 where Empid is NOT NULL and -1 = 1,2This will cause an invalid number because it is trying to check where -1 = 1,2
    You could always change your code to:
    PROCEDURE TEST (EMPID IN VARCHAR2, rc OUT sys_refcursor)
    IS
      stmt        VARCHAR2 (9272);
      V_EMPID     VARCHAR2 (100);
    BEGIN
      V_EMPID := EMPID;
      stmt := 'select * from TEST123 where Empid is NOT NULL';
      stmt := stmt || ' and Empid in (:1)';
      OPEN rc FOR stmt USING V_EMPID;
    END;and forget the if v_empid = '-1' check. If you pass in a 1 it will work, if you pass in 1,2 is will work, but don't pass them in with any tick marks.

  • Passing multiple values to a parameter in report

    Can anyone help me how to pass multiple parameters to a parameter in my report.
    As user is able to select multiple values from list of values , can I pass the selected values to calling function.
    Suppose if User selects Value1,Value2,Value3 from list of values of a parameter P_Org,
    I need to pass all these values to parameter P_Org in my Before Trigger Function in Discoverer reproting tool.
    Thanks in advance

    I have a Before trigger Function to which the parameters will be passed.
    Suppose if User selects multiple values for a parameter then how to pass these multiple Values to that parameter?
    eg:In first Workbook Before Trigger is fired and the paramters for the trigger are
    'par1','par2','par3' etc.
    If User selects multiple values for a parameter 'par1' from the list of values displayed then how to pass all these values to 'par1' in Function?
    After firing the trigger rows are inserted in a temp_table .My second Workbook will
    fetch the rows inserted in this Temp Table.
    I hope u understood what my requirement is...
    Thanks in advance

  • Get a insert session value for SQL query at report

    Hi friends
    I created a global temp table and procedure to support web search form.
    and a search result report. The procudure
    gets search result from multip tables and
    insert into temp table --recordsearch. I can get value from temp table  by call procedure
    at SQL*Plus.
    However, I can not get this value by web report.
    How can I get this insert session value and pass to SQL query for report?
    Thanks,
    Newweb
    CREATE GLOBAL TEMPORARY TABLE recordsearch
    (emp_id          VARCHAR2(200),
    ssn               VARCHAR2(9),
    fname          VARCHAR2(200),
    lname           VARCHAR2(200),
    m_name          VARCHAR2(200)
    ) ON COMMIT PRESERVE ROWS;

    it possible that your web form does not have a persistent, dedicated connection. if you have connection pooling for example, multiple sessions will see the same instance of the GTT, so if one deletes it, then nobody sees it (or you can see others data). if the connections are not persistent, then they can disconnect between calls, deleting the GTT table.

Maybe you are looking for

  • Satellite C650 - Lemonish?

    I have a Toshiba Satellite C650 that I got as a Christmas gift in December. Everything worked fine with it until one day at the end of April. I used the computer in the morning, closed it, went to an appointment for about an hour. When I came home an

  • Since installing 8.0.1 I cannot send an attachment in AOL mail when I could with previous versions.

    When I try to send an attachment in AOL mail I get an error message "We encountered a technical issue, please try again." This happens every time over the past few days.

  • IMG Customizations For ESS In ECC 6.0

    Hi Gurus, I'm stuck with some IMG customization issues. I can see the Overview page and each area group pages for diff applications. Like Employee Search, Personal Information etc. But whenever i'm clicking on the links it is openning up a blank scre

  • Registering Planning into Shared Services

    Hi Experts, I have installed EPMA 11.1.2.2 along with HSS and Planning. When I am trying to create a new Planning application, it says no data sources exists? From where can i create a data source ? Also I dont see Planning appearing in the HSS ? I t

  • Download blob as pdf. Display inline in new browser window

    I am using the standard functionality of loading blob data, using a browse/upload item, and retrieving blob data using a report on a blob column. One of the settings when setting up upload and retrieval column attributes is called "CONTENT DISPOSITIO