Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql Postgres 11-提交过程_Postgresql_Npgsql_Postgresql 11 - Fatal编程技术网

Postgresql Postgres 11-提交过程

Postgresql Postgres 11-提交过程,postgresql,npgsql,postgresql-11,Postgresql,Npgsql,Postgresql 11,最近更新了。它现在支持存储过程。事务最终在Postgres中的存储过程中得到支持。但是,我一直在尝试在一个过程中执行提交,但没有运气 CREATE OR REPLACE PROCEDURE test_update( IN pid character, IN pcategoryname character varying, IN pwebcode character varying, IN porder numeric,

最近更新了。它现在支持存储过程。事务最终在Postgres中的存储过程中得到支持。但是,我一直在尝试在一个过程中执行提交,但没有运气

    CREATE OR REPLACE PROCEDURE test_update(
        IN pid character,
        IN pcategoryname character varying,
        IN pwebcode character varying,
        IN porder numeric,
        IN pupdatedby character varying,
        IN pupdateddate timestamp without time zone,
        IN plang character varying,
        INOUT cresults refcursor)
      LANGUAGE plpgsql
    AS
    $BODY$
    DECLARE

      cnt bigint;
      rtnCode char(1);

    BEGIN
     cresults := 'cur';

        BEGIN
        update test_table
        set  FCATEGORYNAME   = pCategoryName,
             FWEBCODE        = pWebCode,
             FORDER          = pOrder,
             FUPDATEDBY      = pUpdatedBy,
             FUPDATEDDATE    = pUpdatedDate,
             FLANGCODE       = pLang
        where lower(FID) = lower(pId);
        COMMIT;
        end;
      .
      .
      EXCEPTION WHEN ....
      .
      .
     OPEN cresults FOR VALUES ('stringresult'); 

    end;
    $BODY$;
已更新 进行编辑,以便更新和提交位于没有任何异常的块内

这以前用于执行该过程。我能够获取refcursor的结果。添加提交后不再工作:

begin;
CALL testupdate('ad3caecb-9235-4945-b37a-9b7ff89fdfe0','aa','138',0,'test','2018/06/29 18:04:03','zh-cn','');
fetch all in cur;
commit;
但当我执行以下命令时:

CALL testupdate('ad3caecb-9235-4945-b37a-9b7ff89fdfe0','aa','138',0,'test','2018/06/29 18:04:03','zh-cn','');
。。它运行正常,行得到了更新,但这种运行方式不允许我从refcursor获取结果


在使用COMMIT执行过程时,是否有任何方法可以获取我的refcursor的结果。非常感谢您的帮助。感谢

中的哪个异常会准确抛出?异常:SQL错误:第19行的事务终止无效提交:“事务不能在具有异常处理程序的块内结束。”-您需要将
更新
提交
放入没有异常处理程序的块中(当前,您的过程是一个具有异常处理程序的单个块)好的,如果我单独运行“Call”,删除exeption确实有效,谢谢!但是当我运行“begin;Call;fetch all in cur;commit;”出现了相同的异常错误。我必须用后一种方法调用它来获得cur的结果。这可能吗?阅读关于无效事务终止错误的内容,它说“显然,调用仅在其自身的上下文中有效……然而,产生的错误有点含糊不清;为什么事务终止无效?它不能仅仅说我们不能从过程中关闭当前事务吗?”