0
我有一個PL/SQL的功能如下:爲每個刀片重置變量值
create FUNCTION Test
return number
IS cnpParmId NUMBER;
good VARCHAR(1) := 'F';
exist VARCHAR(1) := 'F';
begin
good := 'F';
exist := 'F';
loop
select schema1.parm_id_seq.nextval into cnpParmId from dual;
begin
select 'T' into good from dual where cnpParmId not in (select PARM_ID from schema1.mytable1);
exception when NO_DATA_FOUND then good := 'F';
end;
exit when good = 'T';
end loop;
return cnpParmId;
end;
現在使用此功能正在嘗試將值插入表:
declare
var1 number := Test;
BEGIN
INSERT INTO schema1.tbl
(PARM_ID, PARM_NAM, PARM_VAL_TXT, PARM_USAGE_TYPE_CD, PARM_USAGE_VAL_TXT, CRTE_TS, CRTE_USER_ID, LST_UPDT_TS, LST_UPDT_USER_ID, SITE_CD)
SELECT var1, 'VEL_INT_TYPE_MI', 'Minutes', 'RTS', NULL, SYSDATE, 'ilogdmgr', SYSDATE, 'ilogdmgr', NULL from dual;
INSERT INTO schema1.tbl
(PARM_ID, PARM_NAM, PARM_VAL_TXT, PARM_USAGE_TYPE_CD, PARM_USAGE_VAL_TXT,
CRTE_TS, CRTE_USER_ID, LST_UPDT_TS, LST_UPDT_USER_ID, SITE_CD)
select var1, 'Hours', 48, 'RTS', NULL, SYSDATE, 'ilogdmgr', SYSDATE, 'ilogdmgr', NULL from dual;
INSERT INTO schema1.tbl
(PARM_ID, PARM_NAM, PARM_VAL_TXT, PARM_USAGE_TYPE_CD, PARM_USAGE_VAL_TXT,
CRTE_TS, CRTE_USER_ID, LST_UPDT_TS, LST_UPDT_USER_ID, SITE_CD)
select var1, 'Days', 45, 'RTS', NULL, SYSDATE, 'ilogdmgr', SYSDATE, 'ilogdmgr', NULL from dual;
end;
第一插入取從函數返回的值。我希望爲第二次插入刷新值。我期待第二次插入將轉到該函數並返回另一個值。但現在正在這裏發生。採用相同的值並且查詢失敗且具有唯一約束索引。
它工作。謝謝 :) – bin