2010-06-14 5 views
0

Я хочу, чтобы обновить следующую процедуру в таблице Oracle, но это бросает ошибку: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' 

Может ли вы помочь мне решить эту проблему?

ответ

5

Это похоже на триггер ... Вам не нужно «: new» для acount/akeyword, и вам нужно передать идентификатор, который хотите обновить. Например.

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» .. если вы не пытаетесь сделать что-то другое в этом обновлении, его явно неправильно с этим «или» там ..

+0

привет, я не yaking keyword_id в качестве входного параметра ..... это первичный идентификатор, и он автоматически добавляется – murali

+1

Вы пытаетесь переместить код запуска в процедуру, которая будет вызываться из триггера? Если это так, вы не можете просто переместить текст в том числе: новые и: старые ключевые слова в процедуру, поскольку они имеют смысл только в триггерном коде. –

+1

@murali - Вы выпускаете инструкцию UPDATE. Поэтому вам нужно знать путь доступа к строкам, которые вы хотите обновить. Следовательно, необходимо передать первичный ключ в процедуру. Я глубоко надеюсь, что вы не увеличиваете свой первичный ключ при каждом обновлении строки. – APC

Смежные вопросы