Solved

ORA-00905 missing KEYWORD

Posted on 2011-02-16
18
1,520 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 142

Expert Comment

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

Expert Comment

by:Alex Matzinger
Comment Utility
I believe you need the

WHEN MATCHED THEN <update_clause>

but i am not positive it is required
0
 

Author Comment

by:enrique_aeo
Comment Utility
when this happens
 WHEN MATCHED THEN
 must do nothing
 as would the code please
0
 
LVL 4

Expert Comment

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

Expert Comment

by:slightwv (䄆 Netminder)
Comment Utility
'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 76

Expert Comment

by:slightwv (䄆 Netminder)
Comment Utility
What is your database version?
0
 

Author Comment

by:enrique_aeo
Comment Utility
I run that code for the version of the database?
0
 

Author Comment

by:enrique_aeo
Comment Utility
I AM USING pl/sql developer
plsqlDEVELOPER.jpg
0
 
LVL 76

Expert Comment

by:slightwv (䄆 Netminder)
Comment Utility
>>I AM USING pl/sql developer

Can you try the code you have from sqlplus?
0
PRTG Network Monitor: Intuitive Network Monitoring

Network Monitoring is essential to ensure that computer systems and network devices are running. Use PRTG to monitor LANs, servers, websites, applications and devices, bandwidth, virtual environments, remote systems, IoT, and many more. PRTG is easy to set up & use.

 

Author Comment

by:enrique_aeo
Comment Utility
THE SAME ERROR from sql plus
sqlPLUS.jpg
0
 
LVL 76

Assisted Solution

by:slightwv (䄆 Netminder)
slightwv (䄆 Netminder) earned 333 total points
Comment Utility
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
Comment Utility
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
Comment Utility
the same error
sqlPLUS.jpg
0
 

Author Comment

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

Author Comment

by:enrique_aeo
Comment Utility
after executing the statement merge lose connection, do not understand why
0
 
LVL 76

Expert Comment

by:slightwv (䄆 Netminder)
Comment Utility
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 142

Accepted Solution

by:
Guy Hengel [angelIII / a3] earned 167 total points
Comment Utility
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 76

Assisted Solution

by:slightwv (䄆 Netminder)
slightwv (䄆 Netminder) earned 333 total points
Comment Utility
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

PRTG Network Monitor: Intuitive Network Monitoring

Network Monitoring is essential to ensure that computer systems and network devices are running. Use PRTG to monitor LANs, servers, websites, applications and devices, bandwidth, virtual environments, remote systems, IoT, and many more. PRTG is easy to set up & use.

Join & Write a Comment

Suggested Solutions

Title # Comments Views Activity
oracle query 15 63
oracle query help 29 62
Oracle TEXT search question 9 26
VB.Net - Oracle BulkCopy from CSV Date Format 7 22
Working with Network Access Control Lists in Oracle 11g (part 2) Part 1: http://www.e-e.com/A_8429.html Previously, I introduced the basics of network ACL's including how to create, delete and modify entries to allow and deny access.  For many…
I remember the day when someone asked me to create a user for an application developement. The user should be able to create views and materialized views and, so, I used the following syntax: (CODE) This way, I guessed, I would ensure that use…
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 how to Export data from an Oracle database using the Original Export Utility.  The corresponding Import utility, which works the same way is referenced, but not demonstrated.

743 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

Need Help in Real-Time?

Connect with top rated Experts

18 Experts available now in Live!

Get 1:1 Help Now