Je tweede poging was bijna goed. U moet de NULL-waarden controleren met IS NOT NULL. Dus gebruik
INSERT INTO EVENTDETAILS (EVENT_ID, ITEMNAME, ITEMVALUE)
SELECT @EVENT_ID, 'Notes', 'WO#89574' FROM DUAL
WHERE @EVENT_ID IS NOT NULL; -- instead of !=
of
INSERT INTO EVENTDETAILS (EVENT_ID, ITEMNAME, ITEMVALUE)
SELECT t.* FROM (
SELECT @EVENT_ID, 'Notes', 'WO#89574'
) t
WHERE @EVENT_ID IS NOT NULL; -- instead of !=
De eerste kan niet werken:
-- THIS DOES NOT WORK
SELECT IF(@EVENT_ID != null,
INSERT INTO EVENTDETAILS (EVENT_ID, ITEMNAME, ITEMVALUE) ...
omdat de syntaxis van IF is
Voorwaardelijke uitvoering van instructies is alleen mogelijk in opgeslagen routines . De IF-syntaxis van opgeslagen routines zou zoiets toelaten als
IF @EVENT_ID IS NOT NULL THEN
INSERT INTO EVENTDETAILS (EVENT_ID, ITEMNAME, ITEMVALUE) ...
END IF
Je moet die beide syntaxisversies onderscheiden.