存储过程对字符串截取

这篇博客探讨了如何在存储过程中利用INSTR函数处理以'|'分隔的长字符串,进行有效的截取和操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

传入的参数str_pallet_no  是一个长字符串,|隔开


while INSTR(str_pallet_no, '|') > 0 LOOP

      MYARRAY(I) := SUBSTR(str_pallet_no, 1, (INSTR(str_pallet_no, '|') - 1));
      
      str_pallet_no := SUBSTR(str_pallet_no, (INSTR(str_pallet_no, '|') + 1));
      IF INSTR(str_pallet_no, MYARRAY(I)) > 0 THEN
        --檢查傳入序號有無重複
        RES := 'FAIL:' || MYARRAY(I) || ' REPEAT';
        ROLLBACK;
        RETURN;
      END IF;
       DECLARE
        type MYCURSOR IS REF CURSOR;
        CUR MYCURSOR;
        EXEC_SQL  VARCHAR2(1000);
        QUERY_SN  ifsn_detail%ROWTYPE;
      BEGIN
        EXEC_SQL:='SELECT * FROM '||SCHEMA_NAME_I||'.ifsn_detail w  
            where w.pallet_no='''||MYARRAY(I)||'''  and   w.dn_no='''||FACTORY_DN_I||'''';
        OPEN CUR FOR EXEC_SQL ;


      LOOP
        FETCH CUR INTO QUERY_SN;
        EXIT WHEN CUR%NOTFOUND;
          C_PALLET_NO := QUERY_SN.pallet_NO;
          C_CARTON_NO := QUERY_SN.carton_NO; 
          C_DATECODE := QUERY_SN.datecode;
          C_BARCODE := QUERY_SN.delta_serial_no;
          C_REVISION := QUERY_SN.revision;
          c_customer_no := QUERY_SN.barcode;
          
       V_INSERT_IFSN_DETAIL := 'INSERT INTO '||SCHEMA_NAME_I||'.IF_YMBC_REGION_SHIP(INV_NO,PART_NO,PALLET_NO,CARTON_NO,
                SERIAL_NO,RUNNING_NO,VENDOR_CODE,PO_NO,
             PO_GR_QTY,PO_UNIT,PRODUCT_VERSION,DATE_CODE,EXP_DATE,FACTORY_DN,SHIP_TO_CODE,FROM_PLANT,TO_PLANT,
             TRADING_CODE,CREATE_DATE,BC_START_DATE,BC_START_TIME,FINISH_DATE,FINISH_TIME,STATUS,SAP_MESSAGE,CUST_SN)
          VALUES('''||INV_NO_I||''','''||PART_NO_I||''','''||C_PALLET_NO||''','''||C_CARTON_NO||''',
             '''||C_BARCODE||''','''||RUNNING_NO_I||''', 
           '''||VENDOR_CODE_I||''','''||PO_NO_I||''',''1'','''||PO_UNIT_I||''','''||C_REVISION||''',
                  
          '''||C_DATECODE||''','''','''||FACTORY_DN_I||''',
          '''||SHIP_TO_CODE_I||''','''||FROM_PLANT_I||''','''||TO_PLANT_I||''','''||TRADING_CODE_I||''',SYSDATE,'''',
          '''','''','''',''-'','''','''||c_customer_no||''')';
           
        EXECUTE IMMEDIATE  V_INSERT_IFSN_DETAIL ;
           
        COMMIT;
      END LOOP; 
      CLOSE CUR;
      res:='1';
    END;
     I:=I+1;
    END LOOP;  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值