Una stored procedure Mysql di esempio
Come indicato nella prefazione, la nostra funzione accettera' questi parametri e verra' chiamata di conseguenza cosi'.
CALL LOAD_DATA_PRUEBA (100000, 34118, 18794, 6, '2010-01-01');
il codice che andremo a costruire sara' di questo tipo
DELIMITER $$
DROP PROCEDURE IF EXISTS CALL LOAD_DATA_PRUEBA $$
CREATE DEFINER=`deves`@`%` PROCEDURE CALL LOAD_DATA_PRUEBA (IN uidStart INTEGER,
IN customerId INTEGER,
IN areaId INTEGER,
IN numTotaCalls INTEGER,
IN dateYYYYMMDD VARCHAR(10) )
BEGIN
DECLARE i INT DEFAULT 1;
DECLARE hourStart INT DEFAULT 10;
DECLARE dateYYYYMMDD_final VARCHAR(19);
IF customerId IS NOT NULL THEN
IF customerId IS NOT NULL THEN
IF areaId IS NOT NULL THEN
IF numTotaCalls IS NOT NULL THEN
WHILE i <= numTotaCalls DO
SET uidStart = uidStart + i;
SET hourStart = hourStart + i;
SET dateYYYYMMDD_final = CONCAT(dateYYYYMMDD,' ',hourStart, ':10', ':09');
INSERT INTO NomeTable (uid, sending_id, country_id, customer_id, account_id, cli_id, cli_a, cli_b, call_price, call_cost, area_id, destination_id, destination_prefix, destination_description, call_date_ini, call_date_end, call_duration, cycle, date_created, date_grouping)
VALUES
(uidStart, 20, '724', customerId, 123602, 8, '911390883', '34607194369', 0.370000, 0.145917, areaId, 35013, '34607', 'Spain Mobile / Vodafone', dateYYYYMMDD_final, dateYYYYMMDD_final, 103, 1, dateYYYYMMDD_final, dateYYYYMMDD_final);
SET i = i + 1;
SET hourStart = 10;
END WHILE;
END IF;
END IF;
END IF;
END IF;
END;
$$
Nell'esempio notate il costrutto "While", come assegnare i valori alle vostre variabili (SET), il
costrutto condizionale (IF) e come utilizzare funzioni sql direttamente nel codice (CONCAT).
Nei prossimi articoli, preparero' esempi piu' complessi di stored procedure.







Linkedin
Flickr
Anobii
Youtube
Lastfm