tags:

views:

174

answers:

2

Hello,

The following Oracle statement:

 DECLARE ID NUMBER;
 BEGIN
  UPDATE myusername.terrainMap 
  SET playerID = :playerID,tileLayout = :tileLayout 
  WHERE ID = :ID
 END;

Gives me the following error:

ORA-06550: line 6, column 15:
PL/SQL: ORA-00933: SQL command not properly ended
ORA-06550: line 3, column 19:
PL/SQL: SQL Statement ignored
ORA-06550: line 6, column 18:
PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following:

   ( begin case declare end exception exit for goto if loop mod
   null pragma raise return select update while with
   <an identifier> <a double-quoted>

I am pretty much at a loss. This appears to be a rather simple statement. If it helps any, I had a similar statement that performed an INSERT which used to work, but today has been giving me the same message.

+2  A: 

Add a semi-colon after where id=:id

MJB
I obviously need more coffee. Haha thank you!
rageingnonsense
@rageingnonsense : no problem. I was wondering if you copy/pasted or if the missing semi-colon was an artifact of retyping the code.
MJB
A: 

You have a number of problems here:

  1. Missing semi-colon (as MJB saw)

  2. :ID refers to an in-bound variable, so your local declaration (DECLARE ID NUMBER;) is not being used.

  3. You're using a variable name which (apparently) is the same name as a colum in your table. If you try to use your local ID variable, the query will still not use it unless you use a block label.

That said, it looks like you're sending ID in as a bind variable anyway, so it's more likely that you should just remove the declaration from the block.

Jeffrey Kemp
That's why I asked whether this was in SQLPlus. I could not understand how his bind vars were being used. And I think perhaps this is **not** really what he is running -- it is a test version of code he thought should run.
MJB