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