Oracle function

本文介绍了一个用于检查特定组织、部门及物品类型下是否存在有效HS代码的Oracle PL/SQL函数。该函数通过查询多个表来确定指定条件下是否至少有一个有效的HS代码记录。

 

CREATE OR REPLACE FUNCTION Check_Bond_By_Item (p_Organization_Id    NUMBER,                                                                                   

                              p_Dept_Part          VARCHAR2,

                                                           p_ebpt_item_type     NUMBER)

   RETURN VARCHAR2

IS

   x_Hs_Code_t   Msl_Bnd_Ems_Lines.Hs_Code_t%TYPE;

   x_site        VARCHAR2 (10);

 

   CURSOR Cur_ems

   IS

      SELECT Ems_No

        FROM Msl_Bnd_Ems_Headers Mbeh

       WHERE Mbeh.Site = x_Site AND Ems_Type = 8;

 

   x_Return      VARCHAR2 (2);

BEGIN

   BEGIN

      SELECT Site

        INTO x_Site

        FROM Org_Organization_Web Oow

       WHERE Oow.Organization_Id = p_Organization_Id;

   EXCEPTION

      WHEN OTHERS

      THEN

         x_Site := '';

   END;

 

   FOR C1r IN Cur_ems

   LOOP

      BEGIN

         SELECT Hs_Code_t

           INTO x_Hs_Code_t

           FROM Msl_Bnd_Ebpt

          WHERE     Dept_Part = p_Dept_Part

                AND Ems_No = C1r.Ems_No

                AND Hs_Code_t IS NOT NULL

                AND ebpt_item_type = p_ebpt_item_type

                AND ROWNUM = 1;

      EXCEPTION

         WHEN OTHERS

         THEN

            BEGIN

               SELECT Hs_Code_t

                 INTO x_Hs_Code_t

                 FROM Msl_Bnd_Twins_Ebpt

                WHERE     Dept_Part = p_Dept_Part

                      AND Ems_No = C1r.Ems_No

                      AND Hs_Code_t IS NOT NULL

                      AND ebpt_item_type = p_ebpt_item_type

                      AND ROWNUM = 1;

            EXCEPTION

               WHEN OTHERS

               THEN

                  x_Return := 'N';

            END;

      END;

 

      IF x_Hs_Code_t IS NOT NULL

      THEN

         x_Return := 'Y';

         GOTO return_value;

      END IF;

   END LOOP;

 

  <<return_value>>

   RETURN NVL (x_Return, 'N');

END;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值