
Originariamente inviata da
fermat
forse sta settimana è stata stancante e sono un pò rinco, ma anche oggi vi pongo una domanda sicuramente banale.
ad una stored procedure gli passo un valore BOOLEAN, e devo controllare se è true o false.
ma non riesco, in quanto o non entra proprio nella IF, o si comporta come se fosse sempre false.
questo l'ultimo tentativo fatto:
codice:
DELIMITER //
DROP PROCEDURE IF EXISTS add_preventivo //
CREATE PROCEDURE add_preventivo(
IN numero INT,
IN operazione INT,
IN anag INT,
IN gruppo INT,
IN data_scadenza DATE,
IN anno YEAR(4),
IN is_accettato BOOLEAN,
IN is_fatturato BOOLEAN,
IN fattura VARCHAR(255),
IN note TEXT
)
NO SQL
BEGIN
IF numero = 0 THEN
SET @last_numero = (SELECT MAX(prev_numero) FROM preventivi WHERE prev_anno = anno);
IF @last_numero IS NOT NULL THEN
SET @numero = @last_numero + 1;
ELSE
SET @numero = 1;
END IF;
ELSE
SET @numero = numero;
END IF;
IF is_accettato = 'true' THEN
IF operazione = 0 THEN
SET @max_op = (SELECT MAX(prev_operazione) FROM preventivi);
IF @max_op <> 0 THEN
SET @operazione = 1;
ELSE
SET @operazione = @max_op + 1;
END IF;
END IF;
ELSE
SET @operazione = 120;
END IF;
INSERT INTO preventivi
VALUES (NULL, @numero, @operazione, anag, gruppo, data_scadenza, anno, is_accettato, is_fatturato, fattura, note,
NOW(), NOW())
ON DUPLICATE KEY UPDATE prev_operazione = @operazione,
prev_anag_fk = anag,
prev_gruppo_fk = gruppo,
prev_data_scadenza = data_scadenza,
prev_anno = anno,
prev_is_accettato = is_accettato,
prev_is_fatturato = is_fatturato,
prev_fattura = fattura,
prev_note = note,
prev_data_modifica = NOW();
SELECT prev_id AS last FROM preventivi WHERE prev_numero = @numero AND prev_anno = anno;
END
il pezzo di codice in questione è questo:
codice:
IF is_accettato = 'true' THEN
IF operazione = 0 THEN
SET @max_op = (SELECT MAX(prev_operazione) FROM preventivi);
IF @max_op <> 0 THEN
SET @operazione = 1;
ELSE
SET @operazione = @max_op + 1;
END IF;
END IF;
ELSE
SET @operazione = 120;
END IF;
mi mette sempre 120.
precedentemente avevo anche provato con:
codice:
IF is_accettato = true
oppure:
codice:
IF is_accettato = 1