2013-05-04 31 views
3

是..PostgreSQL的異常處理詳細的我使用簡單功能異常處理的代碼,獲取STACKED診斷

CREATE OR REPLACE FUNCTION test(INT4) RETURNS void as $$ 

DECLARE 

    v_state TEXT; 
    v_msg  TEXT; 
    v_detail TEXT; 
    v_hint TEXT; 
    v_context TEXT; 
BEGIN 

    BEGIN 
     INSERT INTO test2 (id) VALUES ($1); 
    EXCEPTION WHEN others THEN 
     GET STACKED DIAGNOSTICS 
      v_state = RETURNED_SQLSTATE, 
      v_msg  = MESSAGE_TEXT, 
      v_detail = PG_EXCEPTION_DETAIL, 
      v_hint = PG_EXCEPTION_HINT, 
      v_context = PG_EXCEPTION_CONTEXT; 
     raise notice E'Got exception: 
      state : % 
      message: % 
      detail : % 
      hint : % 
      context: %', v_state, v_msg, v_detail, v_hint, v_context; 
    END; 
    RETURN; 
END; 
$$ language PLpgSQL; 

,但它給ERROR: syntax error at or near "STACKED" GET STACKED DIAGNOSTICS

我使用PostgreSQL 9.1和3的pgadmin

回答

3

您需要升級到PostgreSQL 9.2 ... 9.1版本不支持GET堆疊式診斷,因爲據我所知。

+0

是的aleroot非常感謝你,我已經升級了我的postgreSQL版本9.1到9.2__,現在它工作正常。 – khushbu 2013-05-04 13:05:43