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_keywordsテーブル内のキーワードとカウントを (主キー) で更新したいのですがkeyword_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 に答える