FSN#33169 Activiteit: lege verplichte flexvelden met een SQL-default worden nu bij aanmaak berekend
svn path=/Database/trunk/; revision=25565
This commit is contained in:
343
FAC/FAC_PAC.SRC
343
FAC/FAC_PAC.SRC
@@ -2365,155 +2365,253 @@ CREATE OR REPLACE PACKAGE BODY fac AS
|
||||
|
||||
PROCEDURE executeactiviteit (pxmlnode VARCHAR2, pactkey NUMBER)
|
||||
AS
|
||||
lkey NUMBER (10);
|
||||
lkey_m NUMBER (10);
|
||||
lkey_new NUMBER (10);
|
||||
luserkey NUMBER (10);
|
||||
lvolgnr mld_opdr.mld_opdr_bedrijfopdr_volgnr%TYPE;
|
||||
leinddatum mld_melding.mld_melding_einddatum_std%TYPE;
|
||||
CURSOR berekendeflex (
|
||||
mkey IN NUMBER,
|
||||
stdmkey IN NUMBER)
|
||||
IS
|
||||
-- de gedefinieerde verplichte sql-kenmerken die niet ingevuld zijn
|
||||
SELECT k.mld_kenmerk_key,
|
||||
REPLACE (k.mld_kenmerk_default, '##SQL##', '') mld_kenmerk_defaultsql
|
||||
FROM mld_srtkenmerk t,
|
||||
mld_kenmerk k,
|
||||
mld_stdmelding s,
|
||||
mld_discipline d
|
||||
WHERE s.mld_stdmelding_key = stdmkey
|
||||
AND s.mld_ins_discipline_key = d.ins_discipline_key
|
||||
AND ( (k.mld_stdmelding_key = s.mld_stdmelding_key AND k.mld_kenmerk_niveau = 'S')
|
||||
OR (k.mld_stdmelding_key = s.mld_ins_discipline_key
|
||||
AND k.mld_kenmerk_niveau = 'D')
|
||||
OR (k.mld_stdmelding_key = d.ins_srtdiscipline_key
|
||||
AND k.mld_kenmerk_niveau = 'T'))
|
||||
AND k.mld_kenmerk_verwijder IS NULL
|
||||
AND k.mld_srtkenmerk_key = t.mld_srtkenmerk_key
|
||||
AND k.mld_kenmerk_default LIKE '%##SQL##%'
|
||||
AND k.mld_kenmerk_verplicht = 1
|
||||
AND t.mld_srtkenmerk_verwijder IS NULL
|
||||
AND k.mld_kenmerk_volgnummer <= 900
|
||||
AND NOT EXISTS
|
||||
(SELECT ''
|
||||
FROM mld_kenmerkmelding km
|
||||
WHERE mld_kenmerkmelding_verwijder IS NULL
|
||||
AND km.mld_kenmerk_key = k.mld_kenmerk_key
|
||||
AND mld_melding_key = mkey);
|
||||
|
||||
lkey NUMBER (10);
|
||||
lstdmkey mld_melding.mld_stdmelding_key%TYPE;
|
||||
lresolveddefault mld_kenmerkmelding.mld_kenmerkmelding_waarde%TYPE;
|
||||
lkey_m NUMBER (10);
|
||||
lkey_new NUMBER (10);
|
||||
luserkey NUMBER (10);
|
||||
lvolgnr mld_opdr.mld_opdr_bedrijfopdr_volgnr%TYPE;
|
||||
leinddatum mld_melding.mld_melding_einddatum_std%TYPE;
|
||||
BEGIN
|
||||
BEGIN
|
||||
CASE pxmlnode
|
||||
WHEN 'melding'
|
||||
THEN
|
||||
SELECT MAX (mld_melding_key)
|
||||
INTO lkey
|
||||
SELECT mld_melding_key, mld_stdmelding_key
|
||||
INTO lkey, lstdmkey
|
||||
FROM mld_melding
|
||||
WHERE fac_activiteit_key = pactkey;
|
||||
|
||||
SELECT mld_s_mld_melding_key.nextval
|
||||
INTO lkey_new
|
||||
FROM DUAL;
|
||||
SELECT mld_s_mld_melding_key.NEXTVAL INTO lkey_new FROM DUAL;
|
||||
|
||||
-- TODO: ooit uitvoertijd en accepttijd vers bepalen uit de stdmelding
|
||||
-- TODO: ooit i18n voor de vaste string
|
||||
INSERT INTO mld_melding
|
||||
(mld_melding_key, mld_melding_module, mld_meldbron_key, mld_alg_locatie_key,
|
||||
mld_alg_onroerendgoed_keys, mld_melding_datum, mld_melding_omschrijving,
|
||||
mld_melding_opmerking, mld_stdmelding_key, mld_melding_t_uitvoertijd, mld_melding_t_accepttijd,
|
||||
mld_kosten_klant, mld_melding_document, prs_kostenplaats_key,
|
||||
prs_perslid_key, mld_adres_key,
|
||||
mld_workflowstep_key, mld_melding_start_key, mld_melding_ordernr, mld_melding_spoed)
|
||||
SELECT lkey_new, mld_melding_module, mld_meldbron_key, mld_alg_locatie_key,
|
||||
mld_alg_onroerendgoed_keys, SYSDATE, mld_melding_omschrijving,
|
||||
lcl.l('lcl_mld_activity_generated_by')|| pactkey || '. ' || mld_melding_opmerking,
|
||||
mld_stdmelding_key, mld_melding_t_uitvoertijd, mld_melding_t_accepttijd,
|
||||
mld_kosten_klant, mld_melding_document, prs_kostenplaats_key, prs_perslid_key,
|
||||
mld_adres_key, NULL, NULL,
|
||||
mld_melding_ordernr, mld_melding_spoed
|
||||
INSERT INTO mld_melding (mld_melding_key,
|
||||
mld_melding_module,
|
||||
mld_meldbron_key,
|
||||
mld_alg_locatie_key,
|
||||
mld_alg_onroerendgoed_keys,
|
||||
mld_melding_datum,
|
||||
mld_melding_omschrijving,
|
||||
mld_melding_opmerking,
|
||||
mld_stdmelding_key,
|
||||
mld_melding_t_uitvoertijd,
|
||||
mld_melding_t_accepttijd,
|
||||
mld_kosten_klant,
|
||||
mld_melding_document,
|
||||
prs_kostenplaats_key,
|
||||
prs_perslid_key,
|
||||
mld_adres_key,
|
||||
mld_workflowstep_key,
|
||||
mld_melding_start_key,
|
||||
mld_melding_ordernr,
|
||||
mld_melding_spoed)
|
||||
SELECT lkey_new,
|
||||
mld_melding_module,
|
||||
mld_meldbron_key,
|
||||
mld_alg_locatie_key,
|
||||
mld_alg_onroerendgoed_keys,
|
||||
SYSDATE,
|
||||
mld_melding_omschrijving,
|
||||
lcl.l ('lcl_mld_activity_generated_by')
|
||||
|| pactkey
|
||||
|| '. '
|
||||
|| mld_melding_opmerking,
|
||||
mld_stdmelding_key,
|
||||
mld_melding_t_uitvoertijd,
|
||||
mld_melding_t_accepttijd,
|
||||
mld_kosten_klant,
|
||||
mld_melding_document,
|
||||
prs_kostenplaats_key,
|
||||
prs_perslid_key,
|
||||
mld_adres_key,
|
||||
NULL,
|
||||
NULL,
|
||||
mld_melding_ordernr,
|
||||
mld_melding_spoed
|
||||
FROM mld_melding
|
||||
WHERE mld_melding_key = lkey;
|
||||
|
||||
INSERT INTO mld_kenmerkmelding
|
||||
(mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
|
||||
-- Alle ingevulde kenmerken gewoon overnemen
|
||||
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
|
||||
SELECT lkey_new, mld_kenmerk_key, mld_kenmerkmelding_waarde
|
||||
FROM mld_kenmerkmelding
|
||||
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_melding_key = lkey;
|
||||
|
||||
INSERT INTO mld_melding_object
|
||||
(mld_melding_key, ins_deel_key)
|
||||
-- En van alle niet-ingevulde verplichte kenmerken de defaultwaarde berekenen als
|
||||
-- dat een dynamische waarde is. We ondersteunen hier niet de substitutie van
|
||||
-- ##PRS_PERSLID_KEY##, de melder is nl fixed en een eventueel daarvan afhangende
|
||||
-- waarde kan dat dan logischerwijs doorgaans ook zijn (versimpeling).
|
||||
FOR bf IN berekendeflex (lkey, lstdmkey) LOOP
|
||||
BEGIN
|
||||
EXECUTE IMMEDIATE (bf.mld_kenmerk_defaultsql) INTO lresolveddefault;
|
||||
|
||||
INSERT INTO mld_kenmerkmelding (mld_melding_key,
|
||||
mld_kenmerk_key,
|
||||
mld_kenmerkmelding_waarde)
|
||||
VALUES (lkey_new, bf.mld_kenmerk_key, lresolveddefault);
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
INSERT INTO mld_melding_object (mld_melding_key, ins_deel_key)
|
||||
SELECT lkey_new, ins_deel_key
|
||||
FROM mld_melding_object
|
||||
WHERE mld_melding_object_verwijder IS NULL AND mld_melding_key = lkey;
|
||||
mld.setmeldingstatus(lkey_new, 2,NULL);
|
||||
|
||||
-- Eventuele (gewijzigde) objecten zijn nu ook opgeslagen.
|
||||
-- Nu kunnen pas de definitieve mld_melding.mld_melding_einddatum en mld_melding.mld_melding_einddatum_std bepaald en gezet worden.
|
||||
leinddatum := mld.geteinddatum (lkey_new);
|
||||
mld.setmeldingstatus (lkey_new, 2, NULL);
|
||||
|
||||
UPDATE mld_melding
|
||||
SET mld_melding_einddatum = leinddatum,
|
||||
mld_melding_einddatum_std = leinddatum
|
||||
WHERE mld_melding_key = lkey_new;
|
||||
-- Eventuele (gewijzigde) objecten zijn nu ook opgeslagen.
|
||||
-- Nu kunnen pas de definitieve mld_melding.mld_melding_einddatum en mld_melding.mld_melding_einddatum_std bepaald en gezet worden.
|
||||
leinddatum := mld.geteinddatum (lkey_new);
|
||||
|
||||
UPDATE mld_melding
|
||||
SET mld_melding_einddatum = leinddatum, mld_melding_einddatum_std = leinddatum
|
||||
WHERE mld_melding_key = lkey_new;
|
||||
WHEN 'opdracht'
|
||||
THEN
|
||||
SELECT MAX (mld_opdr_key),
|
||||
MAX (mld_melding_key)
|
||||
INTO lkey,
|
||||
lkey_m
|
||||
SELECT MAX (mld_opdr_key), MAX (mld_melding_key)
|
||||
INTO lkey, lkey_m
|
||||
FROM mld_opdr
|
||||
WHERE fac_activiteit_key = pactkey;
|
||||
|
||||
SELECT mld.bepaalopdrmeldingvolgnr (lkey_m)
|
||||
INTO lvolgnr
|
||||
FROM DUAL;
|
||||
SELECT mld.bepaalopdrmeldingvolgnr (lkey_m) INTO lvolgnr FROM DUAL;
|
||||
|
||||
SELECT mld_s_mld_opdr_key.nextval
|
||||
INTO lkey_new
|
||||
FROM DUAL;
|
||||
SELECT mld_s_mld_opdr_key.NEXTVAL INTO lkey_new FROM DUAL;
|
||||
|
||||
INSERT INTO mld_opdr
|
||||
(mld_opdr_key, mld_opdr_module, mld_melding_key, mld_uitvoerende_keys, mld_typeopdr_key,
|
||||
mld_statusopdr_key, mld_standaardopdr_key, mld_opdr_omschrijving, mld_opdr_datumbegin,
|
||||
mld_opdr_einddatum, mld_opdr_werkzaamheden, mld_opdr_uren, mld_opdr_materiaal, mld_opdr_kosten,
|
||||
mld_opdr_contactpersoon, mld_opdr_bedrijfopdr_volgnr, mld_opdr_uurloon, prs_perslid_key,
|
||||
prs_contactpersoon_key, cnt_contract_key, cnt_contract_dienst_key, prs_kostenplaats_key,
|
||||
mld_opdr_ordernr, mld_opdr_teverzenden)
|
||||
SELECT lkey_new, mld_opdr_module, mld_melding_key, mld_uitvoerende_keys, mld_typeopdr_key, mld_statusopdr_key,
|
||||
mld_standaardopdr_key, mld_opdr_omschrijving, SYSDATE, mld_opdr_einddatum,
|
||||
'Automatisch gegenereerd door activiteit ' || pactkey || '. ' || mld_opdr_werkzaamheden,
|
||||
mld_opdr_uren, mld_opdr_materiaal, mld_opdr_kosten, mld_opdr_contactpersoon, lvolgnr,
|
||||
mld_opdr_uurloon, prs_perslid_key, prs_contactpersoon_key, cnt_contract_key,
|
||||
cnt_contract_dienst_key, prs_kostenplaats_key, mld_opdr_ordernr, mld_opdr_teverzenden
|
||||
INSERT INTO mld_opdr (mld_opdr_key,
|
||||
mld_opdr_module,
|
||||
mld_melding_key,
|
||||
mld_uitvoerende_keys,
|
||||
mld_typeopdr_key,
|
||||
mld_statusopdr_key,
|
||||
mld_standaardopdr_key,
|
||||
mld_opdr_omschrijving,
|
||||
mld_opdr_datumbegin,
|
||||
mld_opdr_einddatum,
|
||||
mld_opdr_werkzaamheden,
|
||||
mld_opdr_uren,
|
||||
mld_opdr_materiaal,
|
||||
mld_opdr_kosten,
|
||||
mld_opdr_contactpersoon,
|
||||
mld_opdr_bedrijfopdr_volgnr,
|
||||
mld_opdr_uurloon,
|
||||
prs_perslid_key,
|
||||
prs_contactpersoon_key,
|
||||
cnt_contract_key,
|
||||
cnt_contract_dienst_key,
|
||||
prs_kostenplaats_key,
|
||||
mld_opdr_ordernr,
|
||||
mld_opdr_teverzenden)
|
||||
SELECT lkey_new,
|
||||
mld_opdr_module,
|
||||
mld_melding_key,
|
||||
mld_uitvoerende_keys,
|
||||
mld_typeopdr_key,
|
||||
mld_statusopdr_key,
|
||||
mld_standaardopdr_key,
|
||||
mld_opdr_omschrijving,
|
||||
SYSDATE,
|
||||
mld_opdr_einddatum,
|
||||
'Automatisch gegenereerd door activiteit '
|
||||
|| pactkey
|
||||
|| '. '
|
||||
|| mld_opdr_werkzaamheden,
|
||||
mld_opdr_uren,
|
||||
mld_opdr_materiaal,
|
||||
mld_opdr_kosten,
|
||||
mld_opdr_contactpersoon,
|
||||
lvolgnr,
|
||||
mld_opdr_uurloon,
|
||||
prs_perslid_key,
|
||||
prs_contactpersoon_key,
|
||||
cnt_contract_key,
|
||||
cnt_contract_dienst_key,
|
||||
prs_kostenplaats_key,
|
||||
mld_opdr_ordernr,
|
||||
mld_opdr_teverzenden
|
||||
FROM mld_opdr
|
||||
WHERE mld_opdr_key = lkey;
|
||||
|
||||
INSERT INTO mld_kenmerkopdr
|
||||
(mld_opdr_key, mld_kenmerk_key, mld_kenmerkopdr_waarde)
|
||||
INSERT INTO mld_kenmerkopdr (mld_opdr_key, mld_kenmerk_key, mld_kenmerkopdr_waarde)
|
||||
SELECT lkey_new, mld_kenmerk_key, mld_kenmerkopdr_waarde
|
||||
FROM mld_kenmerkopdr
|
||||
WHERE mld_kenmerkopdr_verwijder IS NULL AND mld_opdr_key = lkey;
|
||||
mld.setopdrachtstatus(lkey_new, 2,NULL);
|
||||
|
||||
mld.setopdrachtstatus (lkey_new, 2, NULL);
|
||||
WHEN 'bestelling'
|
||||
THEN
|
||||
SELECT MAX (bes_bestelling_key),
|
||||
MAX (prs_perslid_key)
|
||||
INTO lkey,
|
||||
luserkey
|
||||
SELECT MAX (bes_bestelling_key), MAX (prs_perslid_key)
|
||||
INTO lkey, luserkey
|
||||
FROM bes_bestelling
|
||||
WHERE fac_activiteit_key = pactkey;
|
||||
|
||||
SELECT bes_s_bes_bestelling_key.nextval
|
||||
INTO lkey_new
|
||||
FROM DUAL;
|
||||
SELECT bes_s_bes_bestelling_key.NEXTVAL INTO lkey_new FROM DUAL;
|
||||
|
||||
-- Bestelling kopi<70>ren.
|
||||
INSERT INTO bes_bestelling (
|
||||
bes_bestelling_key,
|
||||
bes_bestelling_module,
|
||||
bes_bestelling_status,
|
||||
bes_bestelling_datum,
|
||||
prs_perslid_key,
|
||||
prs_perslid_key_voor,
|
||||
bes_bestelling_opmerking,
|
||||
bes_bestelling_ordernr,
|
||||
bes_bestelling_plaats,
|
||||
mld_adres_key_lev,
|
||||
prs_kostenplaats_key,
|
||||
bes_bestelling_leverdatum,
|
||||
bes_bestelling_kosten_klant
|
||||
)
|
||||
SELECT lkey_new,
|
||||
bes_bestelling_module,
|
||||
bes_bestelling_status,
|
||||
SYSDATE,
|
||||
prs_perslid_key,
|
||||
prs_perslid_key_voor,
|
||||
'Automatisch gegenereerd door activiteit ' || pactkey || '. ' || bes_bestelling_opmerking,
|
||||
bes_bestelling_ordernr,
|
||||
bes_bestelling_plaats,
|
||||
mld_adres_key_lev,
|
||||
prs_kostenplaats_key,
|
||||
TRUNC (SYSDATE + (bes_bestelling_leverdatum - bes_bestelling_datum)),
|
||||
bes_bestelling_kosten_klant
|
||||
FROM bes_bestelling
|
||||
WHERE bes_bestelling_key = lkey;
|
||||
INSERT INTO bes_bestelling (bes_bestelling_key,
|
||||
bes_bestelling_module,
|
||||
bes_bestelling_status,
|
||||
bes_bestelling_datum,
|
||||
prs_perslid_key,
|
||||
prs_perslid_key_voor,
|
||||
bes_bestelling_opmerking,
|
||||
bes_bestelling_ordernr,
|
||||
bes_bestelling_plaats,
|
||||
mld_adres_key_lev,
|
||||
prs_kostenplaats_key,
|
||||
bes_bestelling_leverdatum,
|
||||
bes_bestelling_kosten_klant)
|
||||
SELECT lkey_new,
|
||||
bes_bestelling_module,
|
||||
bes_bestelling_status,
|
||||
SYSDATE,
|
||||
prs_perslid_key,
|
||||
prs_perslid_key_voor,
|
||||
'Automatisch gegenereerd door activiteit '
|
||||
|| pactkey
|
||||
|| '. '
|
||||
|| bes_bestelling_opmerking,
|
||||
bes_bestelling_ordernr,
|
||||
bes_bestelling_plaats,
|
||||
mld_adres_key_lev,
|
||||
prs_kostenplaats_key,
|
||||
TRUNC (SYSDATE + (bes_bestelling_leverdatum - bes_bestelling_datum)),
|
||||
bes_bestelling_kosten_klant
|
||||
FROM bes_bestelling
|
||||
WHERE bes_bestelling_key = lkey;
|
||||
|
||||
-- Kenmerken van bestelling kopi<70>ren.
|
||||
INSERT INTO bes_kenmerkbestell
|
||||
(bes_bestelling_key, bes_kenmerk_key, bes_kenmerkbestell_waarde)
|
||||
INSERT INTO bes_kenmerkbestell (bes_bestelling_key, bes_kenmerk_key, bes_kenmerkbestell_waarde)
|
||||
SELECT lkey_new, bes_kenmerk_key, bes_kenmerkbestell_waarde
|
||||
FROM bes_kenmerkbestell
|
||||
WHERE bes_kenmerkbestell_verwijder IS NULL AND bes_bestelling_key = lkey;
|
||||
@@ -2528,12 +2626,11 @@ CREATE OR REPLACE PACKAGE BODY fac AS
|
||||
SELECT lkey_new,
|
||||
bes_bestelling_item_aantal,
|
||||
bes_bestelling_item_aantalontv,
|
||||
bes.getsrtdeelprijsinfo(bi.bes_srtdeel_key, SYSDATE, 1),
|
||||
bes.getsrtdeelprijsinfo(bi.bes_srtdeel_key, SYSDATE, 1),
|
||||
bes.getsrtdeelprijsinfo (bi.bes_srtdeel_key, SYSDATE, 1),
|
||||
bes.getsrtdeelprijsinfo (bi.bes_srtdeel_key, SYSDATE, 1),
|
||||
bi.bes_srtdeel_key
|
||||
FROM bes_bestelling_item bi, bes_srtdeel isd
|
||||
WHERE bes_bestelling_key = lkey
|
||||
AND isd.bes_srtdeel_key = bi.bes_srtdeel_key;
|
||||
WHERE bes_bestelling_key = lkey AND isd.bes_srtdeel_key = bi.bes_srtdeel_key;
|
||||
|
||||
-- Kenmerken van bestelregels kopi<70>ren.
|
||||
INSERT INTO bes_kenmerkbesteli (bes_bestelling_item_key,
|
||||
@@ -2545,32 +2642,32 @@ CREATE OR REPLACE PACKAGE BODY fac AS
|
||||
kbi.bes_kenmerkbesteli_waarde,
|
||||
SYSDATE
|
||||
FROM bes_kenmerkbesteli kbi,
|
||||
(SELECT bi1.bes_bestelling_item_key bes_bestelling_item_key_new,
|
||||
(SELECT bi1.bes_bestelling_item_key bes_bestelling_item_key_new,
|
||||
bi.bes_bestelling_item_key,
|
||||
bi.bes_srtdeel_key
|
||||
FROM bes_bestelling_item bi, bes_bestelling_item bi1
|
||||
WHERE bi.bes_bestelling_key = lkey
|
||||
AND bi1.bes_srtdeel_key = bi.bes_srtdeel_key
|
||||
AND bi1.bes_bestelling_key = lkey_new) tab1
|
||||
WHERE bi.bes_bestelling_key = lkey
|
||||
AND bi1.bes_srtdeel_key = bi.bes_srtdeel_key
|
||||
AND bi1.bes_bestelling_key = lkey_new) tab1
|
||||
WHERE kbi.bes_bestelling_item_key = tab1.bes_bestelling_item_key
|
||||
AND kbi.bes_bestelling_item_key IN (SELECT bes_bestelling_item_key
|
||||
FROM bes_bestelling_item bi
|
||||
WHERE bi.bes_bestelling_key = lkey);
|
||||
AND kbi.bes_bestelling_item_key IN (SELECT bes_bestelling_item_key
|
||||
FROM bes_bestelling_item bi
|
||||
WHERE bi.bes_bestelling_key = lkey);
|
||||
|
||||
-- Het gaat hier om een geplande actie. Je mag er van uit gaan dat deze goed gekeurd is voordat deze is aangemaakt.
|
||||
-- Daarom bestellingstatus op 4 zetten (Geaccepteerd) en bestelopdracht automatisch aanmaken.
|
||||
bes.setbestellingstatus(lkey_new, 4, luserkey); -- Geaccepteerd
|
||||
bes.makeorders(luserkey, lkey_new); -- bes_makeorders notificeert zelf de leveranciers.
|
||||
bes.setbestellingstatus (lkey_new, 4, luserkey); -- Geaccepteerd
|
||||
bes.makeorders (luserkey, lkey_new); -- bes_makeorders notificeert zelf de leveranciers.
|
||||
END CASE;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
putsystemnotification ( 'Facilitor scheduler: opdracht voor activiteit '
|
||||
|| pactkey
|
||||
|| ' kan niet worden aangemaakt: '
|
||||
|| SQLERRM,
|
||||
3
|
||||
);
|
||||
putsystemnotification (
|
||||
'Facilitor scheduler: opdracht voor activiteit '
|
||||
|| pactkey
|
||||
|| ' kan niet worden aangemaakt: '
|
||||
|| SQLERRM,
|
||||
3);
|
||||
END;
|
||||
END;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user