create or replace procedure P_Get_Barcode
(insGroupName varchar,
codeName varchar,
codeSign varchar,
institutionCode varchar,
codeV out varchar,
codeS out varchar)
as
--codeV varchar(20);
--codeS varchar(20);
currDate date;
bmid varchar(20);
v_sql_str varchar(200);
--v_sql_str1 varchar(200);
--v_sql_str2 varchar(200);
begin
select BARCODE_MANAGE_ID into bmid from T_GROUPINSPECTION where GROUPNAME=insGroupName and IC_LIS_CODE=institutionCode;
--select BM_MZ_CODE into codeV,BM_MZ_SIGN into codeS,BM_UPDATE_DATEIME into currDate,BM_ID into bmid from T_BARCODE_MANAGE where bm_id in(select BARCODE_MANAGE_ID from T_GROUPINSPECTION where GROUPNAME='生化') for update
select BM_UPDATE_DATEIME into currDate from T_BARCODE_MANAGE where bm_id=bmid for update;
--select BM_MZ_CODE into codeV from T_BARCODE_MANAGE where bm_id=bmid;
--v_sql_str1:='select '||codeName||' from T_BARCODE_MANAGE where bm_id='||bmid;
--execute immediate v_sql_str1 into codeV;
--select BM_MZ_SIGN into codeS from T_BARCODE_MANAGE where bm_id=bmid;
--v_sql_str2:='select '||codeSign||' from T_BARCODE_MANAGE where bm_id='||bmid;
--execute immediate v_sql_str2 into codeS;
v_sql_str:='select '||codeName||','||codeSign||' from T_BARCODE_MANAGE where bm_id='||bmid;
execute immediate v_sql_str into codeV,codeS;
if TO_CHAR(currDate,'YYYY_MM_DD')<>TO_CHAR(sysdate,'YYYY_MM_DD') then
update T_BARCODE_MANAGE set BM_UPDATE_DATEIME=sysdate,BM_MZ_CODE='001' where bm_id=bmid;
codeV:='0001';
end if;
update T_BARCODE_MANAGE set BM_MZ_CODE=substr(to_number(codeV)+10001,-4) where bm_id=bmid;
--idvalue:=codeV+codeS;
commit;
exception
when others then
rollback;
codeV:=0;
codeS:=0;
end;