Solved

ORA-00905 missing KEYWORD

Posted on 2011-02-16
18
1,571 Views
Last Modified: 2012-06-27
i am trying execute this query
merge into CLIENTE c
using tmp_Solicitud s
on (c.CODIGOUNICO = s.CodUnico)
when not matched then
insert (
        c.CODIGOUNICO,
        c.RAZONSOCIAL,
        c.NUMERODOCUMENTO,
        c.BANCA,
        c.CODIGOGRUPO,
        c.CLASIFICACIONSBS,
        c.CLASIFICACIONFEVE,
        c.RATINGEMPRESA,
        c.SEGMENTO,
        c.CODIGOEJECUTIVO,
        c.NOMBREEJECUTIVO,
        c.CODIGOTIENDA
)
values(
        s.CodUnico,
        s.RazonSocial,
        s.NumeroDocumento,
        s.CodTipoBanca,
        s.CodGrupo,
        s.CodCalificacionSBS,
        s.CodFeve,
        s.Rating,
        s.CodSegmentacion,
        s.CodEjecutivoNegocios,
        s.DesEjecutivoNegocios,
        s.LineaCredTienda
       );
but i have this erros, missing keyword, view file
missingKEYWORD.jpg
0
Comment
Question by:enrique_aeo
  • 8
  • 6
  • 2
  • +1
18 Comments
 
LVL 143

Expert Comment

by:Guy Hengel [angelIII / a3]
ID: 34910607
you need to specify the WHEN MATCHED part also
0
 
LVL 4

Expert Comment

by:Alex Matzinger
ID: 34910658
I believe you need the

WHEN MATCHED THEN <update_clause>

but i am not positive it is required
0
 

Author Comment

by:enrique_aeo
ID: 34910693
when this happens
 WHEN MATCHED THEN
 must do nothing
 as would the code please
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 4

Expert Comment

by:Alex Matzinger
ID: 34910716
merge into CLIENTE c
using tmp_Solicitud s
on (c.CODIGOUNICO = s.CodUnico)
WHEN MATCHED THEN ( )
when not matched then
insert (
0
 
LVL 77

Expert Comment

by:slightwv (䄆 Netminder)
ID: 34910742
'when matched' is NOT required.

I ran the following code using 10.2.0.3.

drop table tab1 purge;
create table tab1(col1 char(1));

drop table tab2 purge;
create table tab2(col1 char(1));

insert into tab1 values('a');
insert into tab2 values('b');

merge into tab2
using tab1 on (tab1.col1=tab2.col1)
when not matched then
	insert(col1) values('z')
/

Open in new window

0
 
LVL 77

Expert Comment

by:slightwv (䄆 Netminder)
ID: 34910760
What is your database version?
0
 

Author Comment

by:enrique_aeo
ID: 34910902
I run that code for the version of the database?
0
 

Author Comment

by:enrique_aeo
ID: 34910994
I AM USING pl/sql developer
plsqlDEVELOPER.jpg
0
 
LVL 77

Expert Comment

by:slightwv (䄆 Netminder)
ID: 34911008
>>I AM USING pl/sql developer

Can you try the code you have from sqlplus?
0
 

Author Comment

by:enrique_aeo
ID: 34911100
THE SAME ERROR from sql plus
sqlPLUS.jpg
0
 
LVL 77

Assisted Solution

by:slightwv (䄆 Netminder)
slightwv (䄆 Netminder) earned 333 total points
ID: 34911231
You are using a very early release of 9i.  In 10g "when matched" is not required.  It is in 9i.

As the others have said, you must have a WHEN MATCHED.

Try this
merge into CLIENTE c
using tmp_Solicitud s
on (c.CODIGOUNICO = s.CodUnico) 
when not matched then
insert (
        c.CODIGOUNICO,
        c.RAZONSOCIAL,
        c.NUMERODOCUMENTO,
        c.BANCA,
        c.CODIGOGRUPO,
        c.CLASIFICACIONSBS,
        c.CLASIFICACIONFEVE,
        c.RATINGEMPRESA,
        c.SEGMENTO,
        c.CODIGOEJECUTIVO,
        c.NOMBREEJECUTIVO,
        c.CODIGOTIENDA
)
values(
        s.CodUnico,
        s.RazonSocial,
        s.NumeroDocumento,
        s.CodTipoBanca,
        s.CodGrupo,
        s.CodCalificacionSBS,
        s.CodFeve,
        s.Rating,
        s.CodSegmentacion,
        s.CodEjecutivoNegocios,
        s.DesEjecutivoNegocios,
        s.LineaCredTienda
       )
when matched
       update set c.BANCA=c.BANCA;  -- pick a small insignificant column.

Open in new window

0
 

Author Comment

by:enrique_aeo
ID: 34911277
add the sentence
WHEN MATCHED THEN
(
UPDATE
SET   c.RATINGEMPRESA = s.Rating
)
but the error it is the same
plsqlDEVELOPER.jpg
0
 

Author Comment

by:enrique_aeo
ID: 34911312
the same error
sqlPLUS.jpg
0
 

Author Comment

by:enrique_aeo
ID: 34911384
i add
when matched then
but i other error, view file
sqlPLUS.jpg
0
 

Author Comment

by:enrique_aeo
ID: 34911424
after executing the statement merge lose connection, do not understand why
0
 
LVL 77

Expert Comment

by:slightwv (䄆 Netminder)
ID: 34912165
9.2.0.1 was pretty buggy.  I suggest you use one of the other methods from your previos question and forget about merge.
0
 
LVL 143

Accepted Solution

by:
Guy Hengel [angelIII / a3] earned 167 total points
ID: 34913548
I would not use MERGE when all you want to do is INSERT ..
INSERT into CLIENTE 
 ( <column list ...> )
SELECT <column list>
  FROM tmp_Solicitud s
 WHERE NOT EXISTS( SELECT NULL FROM CLIENTE c WHERE c.CODIGOUNICO = s.CodUnico)

Open in new window

0
 
LVL 77

Assisted Solution

by:slightwv (䄆 Netminder)
slightwv (䄆 Netminder) earned 333 total points
ID: 34915713
I still prefer the 'minus' method I posted in your other question:
http://www.experts-exchange.com/Database/Oracle/Q_26826045.html?#a34909809
0

Featured Post

Secure Your Active Directory - April 20, 2017

Active Directory plays a critical role in your company’s IT infrastructure and keeping it secure in today’s hacker-infested world is a must.
Microsoft published 300+ pages of guidance, but who has the time, money, and resources to implement? Register now to find an easier way.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Working with Network Access Control Lists in Oracle 11g (part 1) Part 2: http://www.e-e.com/A_9074.html So, you upgraded to a shiny new 11g database and all of a sudden every program that used UTL_MAIL, UTL_SMTP, UTL_TCP, UTL_HTTP or any oth…
Note: this article covers simple compression. Oracle introduced in version 11g release 2 a new feature called Advanced Compression which is not covered here. General principle of Oracle compression Oracle compression is a way of reducing the d…
This video explains at a high level about the four available data types in Oracle and how dates can be manipulated by the user to get data into and out of the database.
This video shows information on the Oracle Data Dictionary, starting with the Oracle documentation, explaining the different types of Data Dictionary views available by group and permissions as well as giving examples on how to retrieve data from th…

685 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question