当我有一个很大的结果时,Postgres 函数不起作用

Eder Armando 戒指 Lora

我正在将信息从表 1(tmp_subtype) 复制到表 2(subtype_user)。我有一个带有 15 个寄存器的测试表 1。我将此函数运行到 postgres 中:

CREATE OR REPLACE FUNCTION VERIFY_AND_INSERT_SUPTYPE()
    RETURNS text AS $$
    DECLARE
       register_subtype RECORD;
       existe INT DEFAULT 0;
       MESSAGE_EXCEPTION TEXT;
       cursor_subtype CURSOR
       FOR
          SELECT tsd.subtype,tsd.type_id_client,tsd.id_client,tsd.email
          FROM tmp_subtype tsd;
    BEGIN

      OPEN cursor_subtype;
      LOOP
         FETCH cursor_subtype INTO register_subtype;
         EXIT WHEN NOT FOUND;

         SELECT COUNT(*) INTO existe FROM (
            SELECT sdu.id_client FROM subtype_user sdu
            WHERE sdu.id_client = register_subtype.id_client AND sdu.type_id_client = register_subtype.type_id_client
            LIMIT 1
         ) SUB0;

         IF existe = 0 THEN
            INSERT INTO subtype_user(subtype,type_id_client,id_client,email)
            VALUES (register_subtype.subtype,register_subtype.type_id_client,register_subtype.id_client,register_subtype.email);
         ELSE
            UPDATE subtype_user sdu2 SET subtype=register_subtype.subtype,email=register_subtype.email
            WHERE sdu2.id_client = register_subtype.id_client AND sdu2.type_id_client = register_subtype.type_id_client;
         END IF;
      END LOOP;
      CLOSE cursor_subtype;

      RETURN 'OK';

      EXCEPTION WHEN OTHERS THEN
            GET STACKED DIAGNOSTICS MESSAGE_EXCEPTION = MESSAGE_TEXT;
            RETURN MESSAGE_EXCEPTION;
    END; $$
    LANGUAGE plpgsql;

它有效,但是当我使用真实的表 1 运行此函数时,它不起作用。函数完成但什么也没发生。真正的表 1 有 100 万个寄存器。

a_horse_with_no_name

带有嵌入式计数的逐行处理是处理缓慢和低效的方法。此外,如果该函数是从并发事务中调用的,则您的存在检查将不起作用。据我所知,您可以使用单个 INSERT 语句替换整个循环和游标:

CREATE OR REPLACE FUNCTION VERIFY_AND_INSERT_SUPTYPE()
    RETURNS text 
AS $$
DECLARE
  MESSAGE_EXCEPTION TEXT;
BEGIN

  INSERT INTO subtype_user(subtype, type_id_client, id_client, email)
  SELECT tsd.subtype, tsd.type_id_client, tsd.id_client, tsd.email
  FROM tmp_subtype tsd
  ON conflict (id_client, type_id_client) DO UPDATE 
    SET  subtype = excluded.register_subtype,
         email = excluded.email;

  RETURN 'OK';

  EXCEPTION WHEN OTHERS THEN
        GET STACKED DIAGNOSTICS MESSAGE_EXCEPTION = MESSAGE_TEXT;
        RETURN MESSAGE_EXCEPTION;
END; $$
LANGUAGE plpgsql;

我可能不会在开始时添加异常处理程序,以便调用者看到完整的异常。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我的mouseOver函数不起作用?

来自分类Dev

jQuery内容替换在我的函数中不起作用

来自分类Dev

为什么我的函数调用不起作用?

来自分类Dev

我的redirect()函数在使用CodeIgniter时不起作用

来自分类Dev

为什么“ $ _COOKIE”导致我的fwrite()函数不起作用?

来自分类Dev

为什么函数'x'.write(frame)对我不起作用?

来自分类Dev

只有一个值时,函数生成器不起作用?

来自分类Dev

用R向量化我的函数不起作用

来自分类Dev

我正在尝试在自身内部调用一个函数,但是它对我不起作用

来自分类Dev

我的New-RandomPassword函数突然不起作用

来自分类Dev

为什么我的def函数在Python中不起作用?

来自分类Dev

当我使用ToListAsync方法时一个线程不起作用

来自分类Dev

当我从另一个宏“调用”它时,宏不起作用,但是当我单独选择它时,它确实起作用

来自分类Dev

当我有一个按钮时,C#键按下不起作用

来自分类Dev

当我们有一个单独的View控制器时,ItemController不起作用

来自分类Dev

为什么第一个函数在我用javascript覆盖时不起作用

来自分类Dev

具有2个参数的javascript函数不起作用

来自分类Dev

当我使用IF函数获取结果时,Excel SUM函数不起作用

来自分类Dev

调用我的Javascript函数不起作用

来自分类Dev

传递两个参数时函数不起作用

来自分类Dev

在另一个函数内部时,链接函数不起作用

来自分类Dev

带有 getElementById 的函数不起作用

来自分类Dev

当我将其放入函数时 Strlen 不起作用

来自分类Dev

当我从另一个 Mainstoryboard 添加 containerViews 时,导航不起作用?

来自分类Dev

Lapply 函数对我的矩阵不起作用

来自分类Dev

jQuery Change()函数在选择列表中只有一个选项时不起作用

来自分类Dev

调用我的函数时,它不起作用?

来自分类Dev

当我给它一个列表 [..., ..., ..., ...] 作为函数参数时,QtGui.QColor 不起作用

来自分类Dev

函数 row.add() 在我的函数中不起作用:

Related 相关文章

  1. 1

    为什么我的mouseOver函数不起作用?

  2. 2

    jQuery内容替换在我的函数中不起作用

  3. 3

    为什么我的函数调用不起作用?

  4. 4

    我的redirect()函数在使用CodeIgniter时不起作用

  5. 5

    为什么“ $ _COOKIE”导致我的fwrite()函数不起作用?

  6. 6

    为什么函数'x'.write(frame)对我不起作用?

  7. 7

    只有一个值时,函数生成器不起作用?

  8. 8

    用R向量化我的函数不起作用

  9. 9

    我正在尝试在自身内部调用一个函数,但是它对我不起作用

  10. 10

    我的New-RandomPassword函数突然不起作用

  11. 11

    为什么我的def函数在Python中不起作用?

  12. 12

    当我使用ToListAsync方法时一个线程不起作用

  13. 13

    当我从另一个宏“调用”它时,宏不起作用,但是当我单独选择它时,它确实起作用

  14. 14

    当我有一个按钮时,C#键按下不起作用

  15. 15

    当我们有一个单独的View控制器时,ItemController不起作用

  16. 16

    为什么第一个函数在我用javascript覆盖时不起作用

  17. 17

    具有2个参数的javascript函数不起作用

  18. 18

    当我使用IF函数获取结果时,Excel SUM函数不起作用

  19. 19

    调用我的Javascript函数不起作用

  20. 20

    传递两个参数时函数不起作用

  21. 21

    在另一个函数内部时,链接函数不起作用

  22. 22

    带有 getElementById 的函数不起作用

  23. 23

    当我将其放入函数时 Strlen 不起作用

  24. 24

    当我从另一个 Mainstoryboard 添加 containerViews 时,导航不起作用?

  25. 25

    Lapply 函数对我的矩阵不起作用

  26. 26

    jQuery Change()函数在选择列表中只有一个选项时不起作用

  27. 27

    调用我的函数时,它不起作用?

  28. 28

    当我给它一个列表 [..., ..., ..., ...] 作为函数参数时,QtGui.QColor 不起作用

  29. 29

    函数 row.add() 在我的函数中不起作用:

热门标签

归档