Postgresql函数执行错误

时间:2016-08-12 18:47:32

标签: postgresql

我创建了两个函数。我想在main函数中运行该函数。当我运行main函数时,我收到一个错误。我该如何解决这个问题?

  

注意:受影响的行scrap_v15 = 0   语境:SQL语句“选择update_scrap_v15()”   PL / pgSQL函数all_functions()在SQL语句的第15行   错误:查询没有结果数据的目的地   提示:如果要放弃SELECT的结果,请改用PERFORM。   语境:PL / pgSQL all_functions()在SQL语句第15行

这是我的第一个功能

CREATE OR REPLACE FUNCTION update_scrap_v15() RETURNS void  AS 
$BODY$
DECLARE
   scrap_d integer;
BEGIN
     update public.scrap_v15_src t2  set scrap =  66 where scrap= 0 and il like '%src%';
     GET DIAGNOSTICS scrap_d = ROW_COUNT;
     RAISE NOTICE 'The rows affected scrap d=%', scrap_d;
END;
$BODY$   
LANGUAGE plpgsql VOLATILE   
COST 100; 
ALTER FUNCTION update_scrap_v15()
OWNER TO postgres;

这是我的第二个功能

  CREATE OR REPLACE FUNCTION scrap_type() RETURNS void  AS 
  $BODY$
  DECLARE
    scrap_t integer;
  BEGIN
update  public.tmz_001  set scrap_type = '55';
update  public.tmz_001  set scrap_dtu = '55';
GET DIAGNOSTICS scrap_t = ROW_COUNT;    
RAISE NOTICE 'The rows affected scrap d=%', scrap_t;

END;
$BODY$   
LANGUAGE plpgsql VOLATILE   
COST 100; 
ALTER FUNCTION scrap_type()
OWNER TO postgres;

这是我的主要功能

CREATE OR REPLACE FUNCTION all_functions() RETURNS void  AS 
$BODY$
DECLARE
    adm_1 integer; adm_2 integer; 
BEGIN
    Select update_scrap_v15();
    GET DIAGNOSTICS adm_1 = ROW_COUNT;
    RAISE NOTICE 'affected=%', adm_1;
    Select scrap_type();
    GET DIAGNOSTICS adm_2 = ROW_COUNT;
    RAISE NOTICE 'affected=%', adm_2;   
END;
$BODY$
LANGUAGE plpgsql VOLATILE   
COST 100; 
ALTER FUNCTION all_functions()
OWNER TO postgres;

1 个答案:

答案 0 :(得分:1)

在postgres中,如果函数返回由void调用的PERFORM类型。

相反:

Select update_scrap_v15();

使用:

PERFORM update_scrap_v15();