oracle存储过程分隔字符串,Oracle存储过程,以逗号分隔字符串传参的处理

CREATE OR REPLACE PROCEDURE PROC_UPDATE_LIUYANG(VIDNUMERIC VARCHAR2,

VMARKVARCHAR2,

VKEEPTYPEVARCHAR2,

VMODIFYBYVARCHAR2, verrorint out int) AS

CURSOR CUR_KEEPTYPE IS

SELECT *

FROM THE (SELECT CAST(STR2NUMLIST123(VKEEPTYPE) ASVARTABLETYPE)FROMDUAL);

OLD_KEEP_TYPEVARCHAR2(60);

VTEMPLATE_IDVARCHAR2(60);

VSMPSORTVARCHAR2(40);

VSAMPLENAMEVARCHAR2(60);

VSPECIFACTIONVARCHAR2(60);

VPRODUCTUNITVARCHAR2(30);

VBATCHNAMEVARCHAR2(60);

VCOUNTINT;BEGINverrorint := 0;SELECTT.CT_KEEP_TYPEINTOOLD_KEEP_TYPEFROMSAMPLE TWHERE T.ID_NUMERIC = LPAD(VIDNUMERIC, 10);SELECTS.TEMPLATE_IDINTOVTEMPLATE_IDFROMSAMPLE SWHERE S.ID_NUMERIC = LPAD(VIDNUMERIC, 10);SELECTS.CT_SMP_SORTINTOVSMPSORTFROMSAMPLE SWHERE S.ID_NUMERIC = LPAD(VIDNUMERIC, 10);SELECTS.SAMPLE_NAMEINTOVSAMPLENAMEFROMSAMPLE SWHERE S.ID_NUMERIC = LPAD(VIDNUMERIC, 10);SELECTS.CT_SMP_SPECIFICATIONINTOVSPECIFACTIONFROMSAMPLE SWHERE S.ID_NUMERIC = LPAD(VIDNUMERIC, 10);SELECTS.PRODUCT_UNITINTOVPRODUCTUNITFROMSAMPLE SWHERE S.ID_NUMERIC = LPAD(VIDNUMERIC, 10);SELECTS.BATCH_NAMEINTOVBATCHNAMEFROMSAMPLE SWHERE S.ID_NUMERIC = LPAD(VIDNUMERIC, 10);SELECT COUNT(0)INTOVCOUNTFROMINVENTORY_HEADER HWHERE H.IDENTITY =VTEMPLATE_ID;INSERT INTOSAMPLE_AUDIT_TRAILS

(SAMPLE, CREATE_BY, CREATE_ON, REASION, OPERATE_TYPE)VALUES(LPAD(VIDNUMERIC,10),

VMODIFYBY,

SYSDATE,

VMARK,‘取样台账中对样品留样类型有之前的‘ || OLD_KEEP_TYPE || ‘调整为现在‘ ||VKEEPTYPE);IF VCOUNT = 0 THEN

INSERT INTOINVENTORY_HEADER

(IDENTITY, BASE_UNIT, DESCRIPTION)VALUES(VTEMPLATE_ID,

VPRODUCTUNIT,

VSAMPLENAME|| VSPECIFACTION ||VSMPSORT);END IF;DELETE FROMCT_KEEP_SAMPLE CKSWHERE CKS.ID_NUMERIC = LPAD(VIDNUMERIC, 10);DELETE FROM INVENTORY_ITEM II WHERE II.SAMPLE_ID =TRIM(VIDNUMERIC);UPDATESAMPLE SSET S.CT_KEEP_TYPE =VKEEPTYPEWHERE S.ID_NUMERIC = LPAD(VIDNUMERIC, 10);FOR C_K INCUR_KEEPTYPE LOOPIF C_K.COLUMN_VALUE = ‘常规留样‘ THEN

INSERT INTOCT_KEEP_SAMPLE

(ID_NUMERIC, CT_K_TYPE)VALUES(LPAD(VIDNUMERIC,10), C_K.COLUMN_VALUE);ELSE

INSERT INTOINVENTORY_ITEM

(INVENTORY_ID, SAMPLE_ID, ITEM_TYPE, ITEM_CODE, description)VALUES(VTEMPLATE_ID,

TRIM(VIDNUMERIC),

C_K.COLUMN_VALUE,

VBATCHNAME,

C_K.COLUMN_VALUE);END IF;ENDLOOP;commit;

EXCEPTIONWHEN OTHERS THENverrorint := 1;ROLLBACK;END PROC_UPDATE_LIUYANG;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值