2013-05-04 2 views
3

Я использую простую функцию для обработки коды исключения есть ..PostgreSQL Исключение обработки деталей с GET 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 и pgadmin 3.

ответ

3

Вам необходимо обновить до PostGreSQL 9.2 ... 9.1 версия не поддерживает GET СТеке ДИАГНОСТИКИ, насколько я знаю.

+0

yes aleroot Большое вам спасибо, что у меня была обновленная версия postgreSQL от 9.1 до 9.2__ и теперь она работает нормально. – khushbu

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