paolo@bimodesign.com | +34 608 61 64 10

DB Relational

        

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.