Oracle更新过程问题

mur*_*ali 0 oracle oracle10g oracle9i oracle11g ora-00933

我想更新Oracle表中的以下过程,但它抛出错误:

CREATE OR REPLACE PROCEDURE update_keywords (aKEYWORD IN VARCHAR2, aCOUNT IN NUMBER)
AS BEGIN
   update searchable_keywords  
   set KEYWORD =:new.aKEYWORD or COUNT =:new.aCOUNT 
   where KEUWORD_ID = : old.KEYWORD_ID;
  END;
Run Code Online (Sandbox Code Playgroud)

这是我的程序.我想searchable_keywordskeyword_id(主键)更新表中的关键字和计数,但它抛出错误如下:

LINE/COL ERROR
-------- -----------------------------------------------------------------
3/4      PL/SQL: SQL Statement ignored
4/17     PLS-00049: bad bind variable 'NEW.AKEYWORD'
4/31     PL/SQL: ORA-00933: SQL command not properly ended
4/41     PLS-00049: bad bind variable 'NEW.ACOUNT'
Run Code Online (Sandbox Code Playgroud)

你能帮我解决一下这个问题吗?

Mat*_*son 5

这看起来像一个触发器...你不需要acount/akeyword的":new",你需要传入你想要更新的ID.例如.

CREATE OR REPLACE
PROCEDURE UPDATE_KEYWORDS(
    AKEYWORD    IN VARCHAR2,
    ACOUNT      IN NUMBER,
    AKEYWORD_ID IN NUMBER)
AS
BEGIN
  UPDATE
    SEARCHABLE_KEYWORDS
  SET
    KEYWORD =  AKEYWORD
  , "COUNT"  = ACOUNT
  WHERE
    KEYWORD_ID = AKEYWORD_ID
END;
Run Code Online (Sandbox Code Playgroud)

我不确定为什么你会有一个名为"COUNT"的列...除非你试图在该更新中做一些不同的事情,否则那里的"或"明显错误.