Witam. Poniżej mam procedure i komunikat. Moim zdaniem problem jest w NRPARTII, bo gdy wprowadzam w debuggerze na wejście np 14011042 to nie przekształca mi na varchar tylko wyskakuje komunikat
Treść : fMnu.fProcDef.DMProcDef.fProcDefEd.stQr.SelectQuery:
Can't format message 13:198 -- message file C:\Windows\firebird.msg not found.
Arithmetic exception, numeric overflow, or string truncation.
Numeric value is out of range.
poniżej błąd przy tworzeniu procedury w IBExpert i sama procedura
can't format message 13:393 -- message file C:\Windows\firebird.msg not found.
unsuccessful metadata update.
STORE RDB$PROCEDURES failed.
Malformed string.
CREATE PROCEDURE SP$_ANALIZA_PRODUKTU_V1
(
NRPARTII VARCHAR(60)
)
RETURNS
(
KOMUNIKAT VARCHAR(60)
)
AS
DECLARE VARIABLE ID_POZ_MIESZANIE INTEGER;
DECLARE VARIABLE NRDOSTAWY VARCHAR(60);
DECLARE VARIABLE ID_KARTOTEKA INTEGER;
DECLARE VARIABLE DATA TIMESTAMP;
DECLARE VARIABLE ILOSC NUMERIC(18,4);
DECLARE VARIABLE ID_DOSTAWA INTEGER;
DECLARE VARIABLE ID_POZ INTEGER;
DECLARE VARIABLE ID_NAGL INTEGER;
BEGIN
if (trim(:nrpartii) <> '') then
begin
if (position('(10)' in :nrpartii) > 0) then
nrpartii = substr(:nrpartii, position('(10)' in :nrpartii) + 4, char_length(:nrpartii));
/* MIESZANIE */
select first 1 d.id_dostawa, d.id_poz, d.nrdostawy, k.id_kartoteka, d.datadok, d.iloscdost from dostawa d
join kartoteka k on d.id_kartoteka = k.id_kartoteka
where trim(d.nrdostawy) = :nrpartii
order by d.datadok desc
into :id_dostawa, :id_poz_mieszanie, :nrdostawy, :id_kartoteka, :data, :ilosc;
insert into arit_analiza_produktu (id_dostawa, id_kartoteka, nrdostawy, data, ilosc, mieszanie, pakowanie)
values (:id_dostawa, :id_kartoteka, :nrdostawy, :data, :ilosc, 1, 0);
/* POBIERANIE SUROWCÓW */
select id_nagl from poz
where id_poz = :id_poz_mieszanie
into :id_nagl;
SELECT Id_NaglCzym
FROM NAGLSPRZ
WHERE
( RODZAJSPRZNAGL = 25 AND Id_NaglCo = :id_nagl)
into :id_nagl;
for SELECT P.ID_POZ, r.id_dostawa
FROM POZ P
JOIN POZKPRZPMAT PM ON PM.ID_POZ = P.ID_POZ
JOIN KARTOTEKA K ON K.ID_KARTOTEKA = P.ID_KARTOTEKA
left join rozchdost r on p.id_poz = r.id_poz
WHERE
( P.ID_NAGL = :id_nagl)
into :id_poz, :id_dostawa do
begin
insert into arit_analiza_produktu_skladniki (id_poz, id_dostawa)
values (:id_poz, :id_dostawa);
end
/* PAKOWANIE */
select id_dostawa from dostawa
where id_poz = :id_poz_mieszanie
into :id_dostawa;
for select id_poz from rozchdost
where id_dostawa = :id_dostawa
into :id_poz do
begin
select id_nagl from poz
where id_poz = :id_poz
into :id_nagl;
select id_naglco from naglsprz
where id_naglczym = :id_nagl
into :id_nagl;
select first 1 id_poz from poz
where id_nagl = :id_nagl
into :id_poz;
select d.id_dostawa, d.nrdostawy, k.id_kartoteka, d.datadok, d.iloscdost from dostawa d
join kartoteka k on d.id_kartoteka = k.id_kartoteka
where d.id_poz = :id_poz
into :id_dostawa, :nrdostawy, :id_kartoteka, :data, :ilosc;
insert into arit_analiza_produktu (id_dostawa, id_kartoteka, nrdostawy, data, ilosc, mieszanie, pakowanie)
values (:id_dostawa, :id_kartoteka, :nrdostawy, :data, :ilosc, 0, 1);
end
end
komunikat = 'Raport wygenerowany.';
suspend;
END