2012-10-30 35 views
0

下面是我創建的過程。當我執行它我得到「與編譯錯誤創建程序」我不明白的地方我沒有弄錯在下面的程序代碼中,有人幫助我通過在代碼中發現錯誤提前通過編譯錯誤創建的過程

create or replace PROCEDURE newprocedur(inMerid IN VARCHAR2,outCount OUT NUMBER) AS 
    CURSOR c1 IS 
    select CLIENT_COUNT 
    from OP_TMER_CONF_PARENT 
    where MER_ID = inMerid 
    FOR UPDATE OF CLIENT_COUNT; 
BEGIN 
    Open c1 
    loop 
    fetch c1 into outCount; 
    exit when c1%NOTFOUND; 
    outCount:=outCount+1; 
    update OP_TMER_CONF_PARENT 
     set CLIENT_COUNT = outCount 
    where current of c1; 
    end loop; 
    close c1; 
END; 

謝謝

+1

多少條記錄你期待更新?如果只有1個,您可以在單個SQL語句中執行此操作!提示:使用'returns'子句。 –

+0

類似於:'update op_tmer_conf_parent set client_count = client_count + 1其中mer_id = inMerid將client_count返回到outCount;' –

回答

1

在SQL * Plus,你可以使用命令

show errors 

告訴你剛編譯的PL/SQL代碼中的錯誤。請參閱http://docs.oracle.com/cd/B19306_01/server.102/b14357/ch12041.htm

我對PL/SQL Developer並不熟悉,但TOAD會自動執行此操作,並向您顯示允許您快速跳轉到包含錯誤的行的錯誤。

+0

PLSQL Developer也這樣做,但前提是程序使用Program窗口類型編譯。 – APC

3

1-錯誤檢查,看看錯誤
here

2 - 你錯過了在5日線 - 分號應

Open c1; 
+0

謝謝您的快速響應Open c1;是問題。 – 1001

+0

如果我使用這個FOR UPDATE OF CLIENT_COUNT,當特定行ll的鎖被釋放時? – 1001