Ciao ragazzi, ho questa store procedure che mi da qualche grattacapo
ALTER PROCEDURE SP_NEW_FALLATO(
ARTICOLO VARCHAR(50),
QTA FLOAT,
QTAISINTEGER INTEGER
)
RETURNS (
RET INTEGER,
QTA_ARTICOLO INTEGER,
QTA_FLOAT_ARTICOLO FLOAT
)
AS
BEGIN
ret=0;
Qta_Articolo=0;
QTA_FLOAT_ARTICOLO=0;
--prima di fare qualcosa controllo che
--la stessa quantità che voglio rendere
--fallati sia disponibile
if (QTAISINTEGER=0) then
select QTA_PEZZI as Qta_Articolo
from MAGAZZINO_FALLATI_LOCALE
where Articolo=:ARTICOLO
INTO :QTA_FLOAT_ARTICOLO;
else
select QTA_PESO as Qta_Articolo
from MAGAZZINO_FALLATI_LOCALE
where Articolo=:ARTICOLO
INTO :QTA_FLOAT_ARTICOLO;
if (QTA<=QTA_FLOAT_ARTICOLO) then
begin
--controllo se esiste già l'articolo nel database
select Count(Articolo) as Qta_Articolo
from MAGAZZINO_FALLATI_LOCALE
where Articolo=:ARTICOLO
INTO :Qta_Articolo;
--se non esiste il dato nel database lo inserisco vuoto
if ((Qta_Articolo is NULL)or(Qta_Articolo<=0)) then
begin
insert into MAGAZZINO_FALLATI_LOCALE(Articolo,QTA_PEZZI_FALLATI,QTA_PESO_FALLATA)VALUES(:ARTICOLO, 0,0);
end
--ora in ogni caso vado ad aggiornare il dato perchè tanto esiste il record
if (QTAISINTEGER=0) then
begin
update MAGAZZINO_FALLATI_LOCALE SET QTA_PEZZI_FALLATI=QTA_PEZZI_FALLATI+CAST(:QTA as integer) WHERE Articolo=:Articolo;
end
else
begin
update MAGAZZINO_FALLATI_LOCALE SET QTA_PESO_FALLATA=QTA_PESO_FALLATA+:QTA WHERE Articolo=:Articolo;
end
--ora elimino la stessa quantità dal magazino locale
end
else
begin
ret=1;
end
END;
Qualcuno capisce perchè mi da il seguente errore:
: PrepareStatement :
-Dynamic SQL Error
-SQL error code = -104
-Token unknown - line 1, column 1
-END
END;
Il problema dovrebbe essere legato al begin...end dei vari if nella SP.
Grazie mille