1
當我在PL/pgSQL中實現以下代碼時,會發生一些錯誤。postgresql GET STACKED DIAGNOSTICS不能使用數組類型?
ERROR: syntax error at or near "["
LINE 10: GET STACKED DIAGNOSTICS text_val[1] = RETURNED_SQLSTATE,
或者任何地方我不正確? 任何答覆將不勝感激。
CREATE or replace FUNCTION merge_db5(key INT, data TEXT) RETURNS text AS
$$
declare
text_val text[];
text_result text;
-- Declare an array to store the result.
BEGIN
text_result := '';
BEGIN
INSERT INTO db(a,b) VALUES (key, data);
EXCEPTION WHEN unique_violation THEN
GET STACKED DIAGNOSTICS text_val[1] = RETURNED_SQLSTATE,
text_val[2] = COLUMN_NAME,
text_val[3] = CONSTRAINT_NAME,
text_val[4] = PG_DATATYPE_NAME,
text_val[5] = MESSAGE_TEXT,
text_val[6] = TABLE_NAME,
text_val[7] = SCHEMA_NAME,
text_val[8] = PG_EXCEPTION_DETAIL,
text_val[9] = PG_EXCEPTION_HINT,
text_val[10] = PG_EXCEPTION_CONTEXT;
text_result = array_to_string(text_val,',','*');
/*
To save all the error messages to this array.
*/
END;
return text_result;
END;
$$
LANGUAGE plpgsql;
很抱歉,第一次使用這個平臺。我再次給我的困惑如下。當我在pgsql上實現上面的代碼時,會發生一些錯誤。 錯誤:語法錯誤處於或接近「[」 LINE 10:GET STACKED DIAGNOSTICS text_val [1] = RETURNED_SQLSTATE, 或其他地方我錯了? 任何答覆將不勝感激。 –
我不確定你是否可以在那裏使用數組元素。文檔只是說「可變」。它是否使用簡單的文本變量作爲RETURNED_SQLSTATE的目標? –