1. Get rid of all advertisements and get unlimited access to documents by upgrading to Premium Membership. Upgrade to Premium Now and also get a Premium Badge!

using insert or update with if

Discussion in 'SQL PL/SQL' started by vieprz, Jul 26, 2011.

  1. vieprz

    vieprz Guest

    hi all, i have been looking all over for a solution,
    here's what im trying to do:
    i have s stored procedure the dose inserts into the same table about 6 times (6 different insert statement that each one inserts into a different field).
    the problem is, of-course , that each insert is done in a new row.
    each insert has a select statement that gets data from different tables...

    is there a way i could ask if a store id (for example) exists then a update statement would be used and if not a insert would be used??

    hope i was clear enough.

    thanks for any help
     
  2. Sadik

    Sadik Community Moderator Forum Guru

    Messages:
    1,906
    Likes Received:
    252
    Trophy Points:
    1,455
    Sure what you are saying seems simple enough to do. You could have an ID field an do an update based on ID. Of course no one can say for sure until you show us your code.
     
  3. rajavu

    rajavu Forum Guru

    Messages:
    815
    Likes Received:
    52
    Trophy Points:
    610
    Location:
    @ Bangalore , India
    And why can't you insert the whole data in one shot based on that particular Id? May be the sql query could be complex slightly and you need to change you business logic.
     
  4. zargon

    zargon Community Moderator Forum Guru

    Messages:
    2,347
    Likes Received:
    348
    Trophy Points:
    1,430
    Location:
    Aurora, CO
    You can perform multiple selects from multiple tables and make one insert for all selected values:

    Code (SQL):
    SQL>
    SQL> CREATE TABLE dest_tbl(
      2        id      NUMBER,
      3        c1      NUMBER,
      4        c2      varchar2(40),
      5        c3      varchar2(40),
      6        c4      varchar2(40),
      7        c5      varchar2(40),
      8        c6      NUMBER
      9  );
     
    TABLE created.
     
    SQL>
    SQL> CREATE TABLE tab1(
      2        id      NUMBER,
      3        c1      NUMBER
      4  );
     
    TABLE created.
     
    SQL>
    SQL> CREATE TABLE tab2(
      2        id      NUMBER,
      3        c2      varchar2(40)
      4  );
     
    TABLE created.
     
    SQL>
    SQL> CREATE TABLE tab3(
      2        id      NUMBER,
      3        c3      varchar2(40)
      4  );
     
    TABLE created.
     
    SQL>
    SQL> CREATE TABLE tab4(
      2        id      NUMBER,
      3        c4      varchar2(40)
      4  );
     
    TABLE created.
     
    SQL>
    SQL> CREATE TABLE tab5(
      2        id      NUMBER,
      3        c5      varchar2(40)
      4  );
     
    TABLE created.
     
    SQL>
    SQL> CREATE TABLE tab6(
      2        id      NUMBER,
      3        c6      NUMBER
      4  );
     
    TABLE created.
     
    SQL>
    SQL>
    SQL> BEGIN
      2        FOR i IN 1..100 loop
      3        INSERT INTO tab1
      4        VALUES (i, i);
      5        INSERT INTO tab2
      6        VALUES(i, lpad(i, 40, '0'));
      7        INSERT INTO tab3
      8        VALUES(i, lpad(i, 40, '0'));
      9        INSERT INTO tab4
     10        VALUES(i, lpad(i, 40, '0'));
     11        INSERT INTO tab5
     12        VALUES(i, lpad(i, 40, '0'));
     13        INSERT INTO tab6
     14        VALUES (i, i);
     15        END loop;
     16  
     17        commit;
     18  
     19  END;
     20  /
     
    PL/SQL PROCEDURE successfully completed.
     
    SQL>
    SQL> DECLARE
      2        v2 varchar2(40);
      3        v3 varchar2(40);
      4        v4 varchar2(40);
      5        v5 varchar2(40);
      6        v6 NUMBER;
      7  
      8        cursor get_first IS
      9        SELECT id, c1 FROM tab1;
     10  
     11  BEGIN
     12        FOR f IN get_first loop
     13         SELECT c2 INTO v2 FROM tab2 WHERE id = f.id;
     14         SELECT c3 INTO v3 FROM tab3 WHERE id = f.id;
     15         SELECT c4 INTO v4 FROM tab4 WHERE id = f.id;
     16         SELECT c5 INTO v5 FROM tab5 WHERE id = f.id;
     17         SELECT c6 INTO v6 FROM tab6 WHERE id = f.id;
     18  
     19         INSERT INTO dest_tbl
     20         VALUES (f.id, f.c1, v2, v3, v4, v5, v6);
     21  
     22        END loop;
     23  
     24        commit;
     25  
     26  END;
     27  /
     
    PL/SQL PROCEDURE successfully completed.
     
    SQL>
    SQL> SELECT * FROM dest_tbl;
     
            ID         C1 C2                                       C3                                       C4                                       C5                                               C6                                                      
    ---------- ---------- ---------------------------------------- ---------------------------------------- ---------------------------------------- ---------------------------------------- ----------                                                      
             1          1 0000000000000000000000000000000000000001 0000000000000000000000000000000000000001 0000000000000000000000000000000000000001 0000000000000000000000000000000000000001          1                                                      
             2          2 0000000000000000000000000000000000000002 0000000000000000000000000000000000000002 0000000000000000000000000000000000000002 0000000000000000000000000000000000000002          2                                                      
             3          3 0000000000000000000000000000000000000003 0000000000000000000000000000000000000003 0000000000000000000000000000000000000003 0000000000000000000000000000000000000003          3                                                      
             4          4 0000000000000000000000000000000000000004 0000000000000000000000000000000000000004 0000000000000000000000000000000000000004 0000000000000000000000000000000000000004          4                                                      
             5          5 0000000000000000000000000000000000000005 0000000000000000000000000000000000000005 0000000000000000000000000000000000000005 0000000000000000000000000000000000000005          5                                                      
             6          6 0000000000000000000000000000000000000006 0000000000000000000000000000000000000006 0000000000000000000000000000000000000006 0000000000000000000000000000000000000006          6                                                      
             7          7 0000000000000000000000000000000000000007 0000000000000000000000000000000000000007 0000000000000000000000000000000000000007 0000000000000000000000000000000000000007          7                                                      
             8          8 0000000000000000000000000000000000000008 0000000000000000000000000000000000000008 0000000000000000000000000000000000000008 0000000000000000000000000000000000000008          8                                                      
             9          9 0000000000000000000000000000000000000009 0000000000000000000000000000000000000009 0000000000000000000000000000000000000009 0000000000000000000000000000000000000009          9                                                      
            10         10 0000000000000000000000000000000000000010 0000000000000000000000000000000000000010 0000000000000000000000000000000000000010 0000000000000000000000000000000000000010         10                                                      
            11         11 0000000000000000000000000000000000000011 0000000000000000000000000000000000000011 0000000000000000000000000000000000000011 0000000000000000000000000000000000000011         11                                                      
            ID         C1 C2                                       C3                                       C4                                       C5                                               C6                                                      
    ---------- ---------- ---------------------------------------- ---------------------------------------- ---------------------------------------- ---------------------------------------- ----------                                                      
            12         12 0000000000000000000000000000000000000012 0000000000000000000000000000000000000012 0000000000000000000000000000000000000012 0000000000000000000000000000000000000012         12                                                      
            13         13 0000000000000000000000000000000000000013 0000000000000000000000000000000000000013 0000000000000000000000000000000000000013 0000000000000000000000000000000000000013         13                                                      
            14         14 0000000000000000000000000000000000000014 0000000000000000000000000000000000000014 0000000000000000000000000000000000000014 0000000000000000000000000000000000000014         14                                                      
            15         15 0000000000000000000000000000000000000015 0000000000000000000000000000000000000015 0000000000000000000000000000000000000015 0000000000000000000000000000000000000015         15                                                      
            16         16 0000000000000000000000000000000000000016 0000000000000000000000000000000000000016 0000000000000000000000000000000000000016 0000000000000000000000000000000000000016         16                                                      
            17         17 0000000000000000000000000000000000000017 0000000000000000000000000000000000000017 0000000000000000000000000000000000000017 0000000000000000000000000000000000000017         17                                                      
            18         18 0000000000000000000000000000000000000018 0000000000000000000000000000000000000018 0000000000000000000000000000000000000018 0000000000000000000000000000000000000018         18                                                      
            19         19 0000000000000000000000000000000000000019 0000000000000000000000000000000000000019 0000000000000000000000000000000000000019 0000000000000000000000000000000000000019         19                                                      
            20         20 0000000000000000000000000000000000000020 0000000000000000000000000000000000000020 0000000000000000000000000000000000000020 0000000000000000000000000000000000000020         20                                                      
            21         21 0000000000000000000000000000000000000021 0000000000000000000000000000000000000021 0000000000000000000000000000000000000021 0000000000000000000000000000000000000021         21                                                      
            22         22 0000000000000000000000000000000000000022 0000000000000000000000000000000000000022 0000000000000000000000000000000000000022 0000000000000000000000000000000000000022         22                                                      
            ID         C1 C2                                       C3                                       C4                                       C5                                               C6                                                      
    ---------- ---------- ---------------------------------------- ---------------------------------------- ---------------------------------------- ---------------------------------------- ----------                                                      
            23         23 0000000000000000000000000000000000000023 0000000000000000000000000000000000000023 0000000000000000000000000000000000000023 0000000000000000000000000000000000000023         23                                                      
            24         24 0000000000000000000000000000000000000024 0000000000000000000000000000000000000024 0000000000000000000000000000000000000024 0000000000000000000000000000000000000024         24                                                      
            25         25 0000000000000000000000000000000000000025 0000000000000000000000000000000000000025 0000000000000000000000000000000000000025 0000000000000000000000000000000000000025         25                                                      
            26         26 0000000000000000000000000000000000000026 0000000000000000000000000000000000000026 0000000000000000000000000000000000000026 0000000000000000000000000000000000000026         26                                                      
            27         27 0000000000000000000000000000000000000027 0000000000000000000000000000000000000027 0000000000000000000000000000000000000027 0000000000000000000000000000000000000027         27                                                      
            28         28 0000000000000000000000000000000000000028 0000000000000000000000000000000000000028 0000000000000000000000000000000000000028 0000000000000000000000000000000000000028         28                                                      
            29         29 0000000000000000000000000000000000000029 0000000000000000000000000000000000000029 0000000000000000000000000000000000000029 0000000000000000000000000000000000000029         29                                                      
            30         30 0000000000000000000000000000000000000030 0000000000000000000000000000000000000030 0000000000000000000000000000000000000030 0000000000000000000000000000000000000030         30                                                      
            31         31 0000000000000000000000000000000000000031 0000000000000000000000000000000000000031 0000000000000000000000000000000000000031 0000000000000000000000000000000000000031         31                                                      
            32         32 0000000000000000000000000000000000000032 0000000000000000000000000000000000000032 0000000000000000000000000000000000000032 0000000000000000000000000000000000000032         32                                                      
            33         33 0000000000000000000000000000000000000033 0000000000000000000000000000000000000033 0000000000000000000000000000000000000033 0000000000000000000000000000000000000033         33                                                      
            ID         C1 C2                                       C3                                       C4                                       C5                                               C6                                                      
    ---------- ---------- ---------------------------------------- ---------------------------------------- ---------------------------------------- ---------------------------------------- ----------                                                      
            34         34 0000000000000000000000000000000000000034 0000000000000000000000000000000000000034 0000000000000000000000000000000000000034 0000000000000000000000000000000000000034         34                                                      
            35         35 0000000000000000000000000000000000000035 0000000000000000000000000000000000000035 0000000000000000000000000000000000000035 0000000000000000000000000000000000000035         35                                                      
            36         36 0000000000000000000000000000000000000036 0000000000000000000000000000000000000036 0000000000000000000000000000000000000036 0000000000000000000000000000000000000036         36                                                      
            37         37 0000000000000000000000000000000000000037 0000000000000000000000000000000000000037 0000000000000000000000000000000000000037 0000000000000000000000000000000000000037         37                                                      
            38         38 0000000000000000000000000000000000000038 0000000000000000000000000000000000000038 0000000000000000000000000000000000000038 0000000000000000000000000000000000000038         38                                                      
            39         39 0000000000000000000000000000000000000039 0000000000000000000000000000000000000039 0000000000000000000000000000000000000039 0000000000000000000000000000000000000039         39                                                      
            40         40 0000000000000000000000000000000000000040 0000000000000000000000000000000000000040 0000000000000000000000000000000000000040 0000000000000000000000000000000000000040         40                                                      
            41         41 0000000000000000000000000000000000000041 0000000000000000000000000000000000000041 0000000000000000000000000000000000000041 0000000000000000000000000000000000000041         41                                                      
            42         42 0000000000000000000000000000000000000042 0000000000000000000000000000000000000042 0000000000000000000000000000000000000042 0000000000000000000000000000000000000042         42                                                      
            43         43 0000000000000000000000000000000000000043 0000000000000000000000000000000000000043 0000000000000000000000000000000000000043 0000000000000000000000000000000000000043         43                                                      
            44         44 0000000000000000000000000000000000000044 0000000000000000000000000000000000000044 0000000000000000000000000000000000000044 0000000000000000000000000000000000000044         44                                                      
            ID         C1 C2                                       C3                                       C4                                       C5                                               C6                                                      
    ---------- ---------- ---------------------------------------- ---------------------------------------- ---------------------------------------- ---------------------------------------- ----------                                                      
            45         45 0000000000000000000000000000000000000045 0000000000000000000000000000000000000045 0000000000000000000000000000000000000045 0000000000000000000000000000000000000045         45                                                      
            46         46 0000000000000000000000000000000000000046 0000000000000000000000000000000000000046 0000000000000000000000000000000000000046 0000000000000000000000000000000000000046         46                                                      
            47         47 0000000000000000000000000000000000000047 0000000000000000000000000000000000000047 0000000000000000000000000000000000000047 0000000000000000000000000000000000000047         47                                                      
            48         48 0000000000000000000000000000000000000048 0000000000000000000000000000000000000048 0000000000000000000000000000000000000048 0000000000000000000000000000000000000048         48                                                      
            49         49 0000000000000000000000000000000000000049 0000000000000000000000000000000000000049 0000000000000000000000000000000000000049 0000000000000000000000000000000000000049         49                                                      
            50         50 0000000000000000000000000000000000000050 0000000000000000000000000000000000000050 0000000000000000000000000000000000000050 0000000000000000000000000000000000000050         50                                                      
            51         51 0000000000000000000000000000000000000051 0000000000000000000000000000000000000051 0000000000000000000000000000000000000051 0000000000000000000000000000000000000051         51                                                      
            52         52 0000000000000000000000000000000000000052 0000000000000000000000000000000000000052 0000000000000000000000000000000000000052 0000000000000000000000000000000000000052         52                                                      
            53         53 0000000000000000000000000000000000000053 0000000000000000000000000000000000000053 0000000000000000000000000000000000000053 0000000000000000000000000000000000000053         53                                                      
            54         54 0000000000000000000000000000000000000054 0000000000000000000000000000000000000054 0000000000000000000000000000000000000054 0000000000000000000000000000000000000054         54                                                      
            55         55 0000000000000000000000000000000000000055 0000000000000000000000000000000000000055 0000000000000000000000000000000000000055 0000000000000000000000000000000000000055         55                                                      
            ID         C1 C2                                       C3                                       C4                                       C5                                               C6                                                      
    ---------- ---------- ---------------------------------------- ---------------------------------------- ---------------------------------------- ---------------------------------------- ----------                                                      
            56         56 0000000000000000000000000000000000000056 0000000000000000000000000000000000000056 0000000000000000000000000000000000000056 0000000000000000000000000000000000000056         56                                                      
            57         57 0000000000000000000000000000000000000057 0000000000000000000000000000000000000057 0000000000000000000000000000000000000057 0000000000000000000000000000000000000057         57                                                      
            58         58 0000000000000000000000000000000000000058 0000000000000000000000000000000000000058 0000000000000000000000000000000000000058 0000000000000000000000000000000000000058         58                                                      
            59         59 0000000000000000000000000000000000000059 0000000000000000000000000000000000000059 0000000000000000000000000000000000000059 0000000000000000000000000000000000000059         59                                                      
            60         60 0000000000000000000000000000000000000060 0000000000000000000000000000000000000060 0000000000000000000000000000000000000060 0000000000000000000000000000000000000060         60                                                      
            61         61 0000000000000000000000000000000000000061 0000000000000000000000000000000000000061 0000000000000000000000000000000000000061 0000000000000000000000000000000000000061         61                                                      
            62         62 0000000000000000000000000000000000000062 0000000000000000000000000000000000000062 0000000000000000000000000000000000000062 0000000000000000000000000000000000000062         62                                                      
            63         63 0000000000000000000000000000000000000063 0000000000000000000000000000000000000063 0000000000000000000000000000000000000063 0000000000000000000000000000000000000063         63                                                      
            64         64 0000000000000000000000000000000000000064 0000000000000000000000000000000000000064 0000000000000000000000000000000000000064 0000000000000000000000000000000000000064         64                                                      
            65         65 0000000000000000000000000000000000000065 0000000000000000000000000000000000000065 0000000000000000000000000000000000000065 0000000000000000000000000000000000000065         65                                                      
            66         66 0000000000000000000000000000000000000066 0000000000000000000000000000000000000066 0000000000000000000000000000000000000066 0000000000000000000000000000000000000066         66                                                      
            ID         C1 C2                                       C3                                       C4                                       C5                                               C6                                                      
    ---------- ---------- ---------------------------------------- ---------------------------------------- ---------------------------------------- ---------------------------------------- ----------                                                      
            67         67 0000000000000000000000000000000000000067 0000000000000000000000000000000000000067 0000000000000000000000000000000000000067 0000000000000000000000000000000000000067         67                                                      
            68         68 0000000000000000000000000000000000000068 0000000000000000000000000000000000000068 0000000000000000000000000000000000000068 0000000000000000000000000000000000000068         68                                                      
            69         69 0000000000000000000000000000000000000069 0000000000000000000000000000000000000069 0000000000000000000000000000000000000069 0000000000000000000000000000000000000069         69                                                      
            70         70 0000000000000000000000000000000000000070 0000000000000000000000000000000000000070 0000000000000000000000000000000000000070 0000000000000000000000000000000000000070         70                                                      
            71         71 0000000000000000000000000000000000000071 0000000000000000000000000000000000000071 0000000000000000000000000000000000000071 0000000000000000000000000000000000000071         71                                                      
            72         72 0000000000000000000000000000000000000072 0000000000000000000000000000000000000072 0000000000000000000000000000000000000072 0000000000000000000000000000000000000072         72                                                      
            73         73 0000000000000000000000000000000000000073 0000000000000000000000000000000000000073 0000000000000000000000000000000000000073 0000000000000000000000000000000000000073         73                                                      
            74         74 0000000000000000000000000000000000000074 0000000000000000000000000000000000000074 0000000000000000000000000000000000000074 0000000000000000000000000000000000000074         74                                                      
            75         75 0000000000000000000000000000000000000075 0000000000000000000000000000000000000075 0000000000000000000000000000000000000075 0000000000000000000000000000000000000075         75                                                      
            76         76 0000000000000000000000000000000000000076 0000000000000000000000000000000000000076 0000000000000000000000000000000000000076 0000000000000000000000000000000000000076         76                                                      
            77         77 0000000000000000000000000000000000000077 0000000000000000000000000000000000000077 0000000000000000000000000000000000000077 0000000000000000000000000000000000000077         77                                                      
            ID         C1 C2                                       C3                                       C4                                       C5                                               C6                                                      
    ---------- ---------- ---------------------------------------- ---------------------------------------- ---------------------------------------- ---------------------------------------- ----------                                                      
            78         78 0000000000000000000000000000000000000078 0000000000000000000000000000000000000078 0000000000000000000000000000000000000078 0000000000000000000000000000000000000078         78                                                      
            79         79 0000000000000000000000000000000000000079 0000000000000000000000000000000000000079 0000000000000000000000000000000000000079 0000000000000000000000000000000000000079         79                                                      
            80         80 0000000000000000000000000000000000000080 0000000000000000000000000000000000000080 0000000000000000000000000000000000000080 0000000000000000000000000000000000000080         80                                                      
            81         81 0000000000000000000000000000000000000081 0000000000000000000000000000000000000081 0000000000000000000000000000000000000081 0000000000000000000000000000000000000081         81                                                      
            82         82 0000000000000000000000000000000000000082 0000000000000000000000000000000000000082 0000000000000000000000000000000000000082 0000000000000000000000000000000000000082         82                                                      
            83         83 0000000000000000000000000000000000000083 0000000000000000000000000000000000000083 0000000000000000000000000000000000000083 0000000000000000000000000000000000000083         83                                                      
            84         84 0000000000000000000000000000000000000084 0000000000000000000000000000000000000084 0000000000000000000000000000000000000084 0000000000000000000000000000000000000084         84                                                      
            85         85 0000000000000000000000000000000000000085 0000000000000000000000000000000000000085 0000000000000000000000000000000000000085 0000000000000000000000000000000000000085         85                                                      
            86         86 0000000000000000000000000000000000000086 0000000000000000000000000000000000000086 0000000000000000000000000000000000000086 0000000000000000000000000000000000000086         86                                                      
            87         87 0000000000000000000000000000000000000087 0000000000000000000000000000000000000087 0000000000000000000000000000000000000087 0000000000000000000000000000000000000087         87                                                      
            88         88 0000000000000000000000000000000000000088 0000000000000000000000000000000000000088 0000000000000000000000000000000000000088 0000000000000000000000000000000000000088         88                                                      
            ID         C1 C2                                       C3                                       C4                                       C5                                               C6                                                      
    ---------- ---------- ---------------------------------------- ---------------------------------------- ---------------------------------------- ---------------------------------------- ----------                                                      
            89         89 0000000000000000000000000000000000000089 0000000000000000000000000000000000000089 0000000000000000000000000000000000000089 0000000000000000000000000000000000000089         89                                                      
            90         90 0000000000000000000000000000000000000090 0000000000000000000000000000000000000090 0000000000000000000000000000000000000090 0000000000000000000000000000000000000090         90                                                      
            91         91 0000000000000000000000000000000000000091 0000000000000000000000000000000000000091 0000000000000000000000000000000000000091 0000000000000000000000000000000000000091         91                                                      
            92         92 0000000000000000000000000000000000000092 0000000000000000000000000000000000000092 0000000000000000000000000000000000000092 0000000000000000000000000000000000000092         92                                                      
            93         93 0000000000000000000000000000000000000093 0000000000000000000000000000000000000093 0000000000000000000000000000000000000093 0000000000000000000000000000000000000093         93                                                      
            94         94 0000000000000000000000000000000000000094 0000000000000000000000000000000000000094 0000000000000000000000000000000000000094 0000000000000000000000000000000000000094         94                                                      
            95         95 0000000000000000000000000000000000000095 0000000000000000000000000000000000000095 0000000000000000000000000000000000000095 0000000000000000000000000000000000000095         95                                                      
            96         96 0000000000000000000000000000000000000096 0000000000000000000000000000000000000096 0000000000000000000000000000000000000096 0000000000000000000000000000000000000096         96                                                      
            97         97 0000000000000000000000000000000000000097 0000000000000000000000000000000000000097 0000000000000000000000000000000000000097 0000000000000000000000000000000000000097         97                                                      
            98         98 0000000000000000000000000000000000000098 0000000000000000000000000000000000000098 0000000000000000000000000000000000000098 0000000000000000000000000000000000000098         98                                                      
            99         99 0000000000000000000000000000000000000099 0000000000000000000000000000000000000099 0000000000000000000000000000000000000099 0000000000000000000000000000000000000099         99                                                      
            ID         C1 C2                                       C3                                       C4                                       C5                                               C6                                                      
    ---------- ---------- ---------------------------------------- ---------------------------------------- ---------------------------------------- ---------------------------------------- ----------                                                      
           100        100 0000000000000000000000000000000000000100 0000000000000000000000000000000000000100 0000000000000000000000000000000000000100 0000000000000000000000000000000000000100        100                                                      
     
    100 ROWS selected.
     
    SQL>
    SQL> spool off