postgresql GET STACKED DIAGNOSTICS不能使用数组类型吗?

父亲月亮

当我在PL / pgSQL中实现以下代码时,会发生一些错误。

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;
帕维尔·斯图尔

这不是您的错误。目标变量应为标量。那里不支持数组。

出现此限制的原因是plpgsql解析器和执行程序的设计非常简单。类似行为具有FOR IN LOOP语句。另一方面,此限制具有实际意义(尽管不是设计好的)-数组更新不是很快的-数组是不可变的结构,因此任何更新都是通过创建修改后的副本来模拟的-较少的数组更新通常意味着执行速度更快。

CREATE or replace FUNCTION merge_db5(key INT, data TEXT)
RETURNS text AS $$
  DECLARE 
     f1 text; f2 text; f3 text; f4 text; f5 text;
     f6 text; f7 text; f8 text; f9 text; f10 text;
  BEGIN
    INSERT INTO db(a,b) VALUES (key, data);
    RETURN '';
  EXCEPTION WHEN unique_violation THEN  
    GET STACKED DIAGNOSTICS f1 = RETURNED_SQLSTATE, 
                            f2 = COLUMN_NAME, f3 = CONSTRAINT_NAME,
                            f4 = PG_DATATYPE_NAME, f5 = MESSAGE_TEXT,
                            f6 = TABLE_NAME, f7 = SCHEMA_NAME,
                            f8 = PG_EXCEPTION_DETAIL, f9 = PG_EXCEPTION_HINT,
                            f10 = PG_EXCEPTION_CONTEXT;
    RETURN array_to_string(ARRAY[f1, f2, f3, f4, f5, f6, f7, f8, f9, f10], '*');
  END;
  $$ LANGUAGE plpgsql;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我们不能使用 GET 在 REST 中创建新资源而不是 PUT 吗?

来自分类Dev

使用jOOQ转换PostgreSQL UUID数组的类型

来自分类Dev

Postgresql 使用 json_populate_recordset 不能使用空值

来自分类Dev

为什么我不能使用postgresql将IsTsVectorExpressionIndex添加到EF CORE的modulebuilder中?

来自分类Dev

为什么我不能使用 PostgreSQL 运行我的 Django 项目?

来自分类Dev

使用PostgreSQL还是PostgreSQL + MongoDB?

来自分类Dev

Npgsql.EntityFrameworkCore.PostgreSQL.Infrastructure.Internal.NpgsqlOptionsExtension类型的方法'get_Info'没有实现

来自分类Dev

postgresql不能在WSL上启动吗?

来自分类Dev

不能使用 WP_Term 类型的对象作为数组

来自分类Dev

导出 CSV 不能使用 stdClass 类型的对象作为数组

来自分类Dev

postgresql jdbc,pgobject可用类型,数组类型

来自分类Dev

postgresql jdbc,pgobject可用类型,数组类型

来自分类Dev

我的应用程序说 - 不能使用 stdClass 类型的对象作为数组,有什么想法吗?

来自分类Dev

不能使用get_post(),get_post_meta()和其他函数

来自分类Dev

How to get the size of a partition (window) in PostgreSQL?

来自分类Dev

Django问题与request.get到PostgreSQL

来自分类Dev

PostgreSQL可以推荐最佳字段类型吗?

来自分类Dev

PostgreSQL文字类型比较

来自分类Dev

PostgreSQL UUID类型性能

来自分类Dev

PostgreSQL连接类型

来自分类Dev

在PostgreSQL中创建类型

来自分类Dev

PostgreSQL jsonb吗?

来自分类Dev

PostgreSQL中数组类型的大小/长度限制

来自分类Dev

列出对PostgreSQL数组的理解

来自分类Dev

PostgreSQL-返回数组

来自分类Dev

选择数组元素PostgreSQL

来自分类Dev

PostgreSQL插入枚举数组

来自分类Dev

Postgresql记录到数组

来自分类Dev

列出对PostgreSQL数组的理解

Related 相关文章

  1. 1

    我们不能使用 GET 在 REST 中创建新资源而不是 PUT 吗?

  2. 2

    使用jOOQ转换PostgreSQL UUID数组的类型

  3. 3

    Postgresql 使用 json_populate_recordset 不能使用空值

  4. 4

    为什么我不能使用postgresql将IsTsVectorExpressionIndex添加到EF CORE的modulebuilder中?

  5. 5

    为什么我不能使用 PostgreSQL 运行我的 Django 项目?

  6. 6

    使用PostgreSQL还是PostgreSQL + MongoDB?

  7. 7

    Npgsql.EntityFrameworkCore.PostgreSQL.Infrastructure.Internal.NpgsqlOptionsExtension类型的方法'get_Info'没有实现

  8. 8

    postgresql不能在WSL上启动吗?

  9. 9

    不能使用 WP_Term 类型的对象作为数组

  10. 10

    导出 CSV 不能使用 stdClass 类型的对象作为数组

  11. 11

    postgresql jdbc,pgobject可用类型,数组类型

  12. 12

    postgresql jdbc,pgobject可用类型,数组类型

  13. 13

    我的应用程序说 - 不能使用 stdClass 类型的对象作为数组,有什么想法吗?

  14. 14

    不能使用get_post(),get_post_meta()和其他函数

  15. 15

    How to get the size of a partition (window) in PostgreSQL?

  16. 16

    Django问题与request.get到PostgreSQL

  17. 17

    PostgreSQL可以推荐最佳字段类型吗?

  18. 18

    PostgreSQL文字类型比较

  19. 19

    PostgreSQL UUID类型性能

  20. 20

    PostgreSQL连接类型

  21. 21

    在PostgreSQL中创建类型

  22. 22

    PostgreSQL jsonb吗?

  23. 23

    PostgreSQL中数组类型的大小/长度限制

  24. 24

    列出对PostgreSQL数组的理解

  25. 25

    PostgreSQL-返回数组

  26. 26

    选择数组元素PostgreSQL

  27. 27

    PostgreSQL插入枚举数组

  28. 28

    Postgresql记录到数组

  29. 29

    列出对PostgreSQL数组的理解

热门标签

归档