从表中选择值并使用Oracle中的函数更新它们

时间:2017-08-09 11:27:28

标签: sql oracle sql-update

我需要将branch_code设置为IN参数,然后从表中选择cms_rungno,cms_finayear并将cms_rungno分配给变量并将其值更新为1.然后,按以下格式返回journ_no。

这是我到目前为止尝试过的代码。我对此并不清楚。

FUNCTION GEN_JOURNO
  ( branch_code IN varchar2 )

  RETURN  varchar2 IS

   journ_no  varchar2;
   rungno number;

BEGIN 
--LAST_NO + 1
    SELECT cms_finayear
    FROM corpinfo.tblcommonserial a
    where cms_brncode=branch_code and cms_code='JOUN'

    SELECT cms_rungno INTO rungno  
    FROM corpinfo.tblcommonserial a
    where cms_brncode:=branch_code and cms_code:='JOUN';

    UPDATE corpinfo.tblcommonserial a
    set  cms_rungno:=rungno+1
    where cms_brncode:=branch_code and cms_code:='JOUN'
journ_no:=cms_brncode || SUBSTR(TO_CHAR(cms_finayear),3,2)|| LPAD(TO_CHAR(cms_rungno),6,'0');

    RETURN journ_no ;
--EXCEPTION
   --WHEN exception_name THEN
      -- statements ;
END;  

1 个答案:

答案 0 :(得分:0)

这对我有用。我之前的代码中有语法错误

FUNCTION GEN_JOURNO
      ( branch_code IN varchar2 )

  RETURN  varchar2(5) IS

   journ_no  varchar2(5);
   rungno number;

BEGIN 
--LAST_NO + 1
    SELECT cms_finayear
    FROM corpinfo.tblcommonserial a
    where cms_brncode=branch_code and cms_code='JOUN';

    SELECT cms_rungno INTO rungno  
    FROM corpinfo.tblcommonserial a
    where cms_brncode=branch_code and cms_code='JOUN';

    UPDATE corpinfo.tblcommonserial a
    set  cms_rungno=rungno+1
    where cms_brncode=branch_code and cms_code='JOUN';
journ_no=branch_code || SUBSTR(TO_CHAR(cms_finayear),3,2)|| LPAD(TO_CHAR(cms_rungno),6,'0');

    RETURN journ_no ;
--EXCEPTION
   --WHEN exception_name THEN
      -- statements ;
END;