2016-10-20 48 views
-2

我想用PL/SQL創建下面的過程,但它顯示過程名稱上的紅叉,但沒有顯示錯誤,所以任何人都可以告訴我該代碼有什麼問題創建PL/SQL過程時出錯

我沒有提到的其他
create or replace procedure CREATE_DM_CLIENT(
    V_C_ID VARCHAR2, 
    V_S_ID VARCHAR2, 
    V_A_ID VARCHAR2, 
    V_J  IN VARCHAR2, 
    V_H  IN VARCHAR2, 
    V_COM IN VARCHAR2, 
    V_COD OUT VARCHAR2) 
is 
    code_erreur number; 
    lib_erreur varchar(200) ; 
    num   number := 0; 
BEGIN 
    SELECT SEQ_DEM.NEXTVAL 
    INTO NUM 
    FROM DUAL; 
    INSERT INTO DM_CLIENTS(DM_C_ID, C_ID, S_ID, A, J, H, D_S, C) 
    VALUES(num, V_C_ID, V_S_ID, V_A_ID, V_J, V_H, SYSDATE, V_C); 
    --update num_client set etat=1 where num=V_CLIENT_ID; 
    commit; 
    V_COD:='100'; 
EXCEPTION 
    WHEN OTHERS THEN 
     l_e := SQLERRM ; 
     C_L := SQLCODE ; 
     insert into l_table (ligne , module) 
      values (to_char(CODE_ERREUR)||LIB_ERREUR , 
        'CREATE_DM_CLIENT') ; 
     commit; 
     V_CODEREP:='109'; 
end create_dm_client; 
+0

運行時得到的錯誤是什麼? –

+0

無關,但:'select nextval'不是必需的。您可以直接在'values()'子句中使用'SEQ_DEM.NEXTVAL'。 –

+0

「它顯示了一個紅十字」 - 什麼是「它」?你的意思是[PL/SQL Developer](http://stackoverflow.com/tags/plsqldeveloper/info)?如果是這樣,你需要在程序窗口中工作(並標記你的問題)。 –

回答

1
Compilation errors for PROCEDURE SAC.CREATE_DM_CLIENT 

Error: PLS-00201: identifier 'L_E' must be declared 
Line: 33 
Text: l_e := SQLERRM; 

Error: PL/SQL: Statement ignored 
Line: 33 
Text: l_e := SQLERRM; 

Error: PLS-00201: identifier 'C_L' must be declared 
Line: 34 
Text: C_L := SQLCODE; 

Error: PL/SQL: Statement ignored 
Line: 34 
Text: C_L := SQLCODE; 

Error: PLS-00201: identifier 'V_CODEREP' must be declared 
Line: 40 
Text: V_CODEREP := '109'; 

Error: PL/SQL: Statement ignored 
Line: 40 
Text: V_CODEREP := '109'; 

錯誤,是因爲我沒有表的名稱和順序。

+0

似乎需要聲明變量l_e, C_L和V_CODEREP – ErikL

1

3個提到的變量沒有聲明。

... 
is 
    v_coderep varchar2(3); 
    c_l   varchar2(3) 
    l_e   varchar2(1024); 

... 
0

請在變量聲明部分定義l_e,C_L和V_CODEREP變量。例如 -

l_e   varchar(20); 
    C_L   integer; 
    V_CODEREP varchar(3);