2016-04-18 12 views
-5

Ich habe das unten Skript, ich möchte es so ändern lässt sagen, wenn es zum ersten Mal ausgeführt wird, dann wird es die Spalte erstellen, aber sagen, wenn es zum zweiten Mal ausgeführt wird dann wird es show fail Nachricht, die nicht korrekt ist, sollte es die Nachricht zeigen, dass Spalte erstellt wird und auch wenn es irgendeine Ausnahme gibt sagen wir, Spalte wird nicht erstellt, wegen einer technischen Ausnahme dann sollte es zeigen Fehlermeldung, bitte beraten, wie dies zu erreichenmuss die folgende Oracle-Abfrage ändern

SELECT COUNT(*) INTO L_COL_EXISTS FROM USER_TAB_COLS WHERE COLUMN_NAME = 'TOR' and TABLE_NAME='AVOICE';  
    IF L_COL_EXISTS = 1 
    THEN   
     outcome := 'Success'; 
    ELSE 
     outcome := 'Fail'; 
    END IF; 
    DBMS_OUTPUT.PUT_LINE(outcome); 

Leute raten bitte

+0

Wie fügen Sie die Spalte hinzu? Kennst du die Aussage? –

Antwort

0

ich nehme an, es Ihnen

helfen
CREATE OR REPLACE PROCEDURE add_column 
(
    v_table_name IN VARCHAR2, 
    v_column_name IN VARCHAR2, 
    v_column_type IN VARCHAR2 
) 
IS 
    v_column_exists  pls_integer; 
    v_ddl_str   varchar2(1024); 
BEGIN 
    BEGIN 
     SELECT count(*) 
     INTO v_column_exists 
     FROM user_tab_columns 
     WHERE table_name = upper(v_table_name) 
       and column_name = upper(v_column_name); 
    EXCEPTION 
     WHEN OTHERS THEN 
      RAISE; 
    END; 

    if v_column_exists = 0 then 
     v_ddl_str := 'alter table ' || v_table_name || ' add (' || v_column_name || ' ' || v_column_type || ')'; 
     BEGIN 
      EXECUTE IMMEDIATE alter_str; 
     EXCEPTION 
      WHEN OTHERS THEN 
       dbms_output.put_line ('something wrong'); 
       RAISE; 
     END; 
    ELSE 
     dbms_output.put_line ('Column exists'); 
    END IF; 
EXCEPTION 
    WHEN OTHERS THEN 
     RAISE;  
END add_column; 
/ 
Verwandte Themen