0

我想更新 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;

这是我的程序。我想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'

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

4

1 回答 1

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;

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

于 2010-06-14T06:29:01.697 回答