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:
il pezzo di codice in questione è questo: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
mi mette sempre 120.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;
precedentemente avevo anche provato con:
oppure:codice:IF is_accettato = true
codice:IF is_accettato = 1

Rispondi quotando
