-- Routine DDL
-- --------------------------------------------------------------------------------
DELIMITER $$
CREATE DEFINER=`pravni`@`localhost` PROCEDURE `SP_NASTAVNIK_FUNKCIJA_INSERT`(OUT p_status INT, OUT p_poruka VARCHAR(255), IN p_NastavnikID INT, IN p_NazivFunkcije VARCHAR(30), IN p_DatumIzboraNaFunkciju DATE, IN p_DatumOd DATE, IN p_DatumDo DATE)
BEGIN
DECLARE v_FunkcijaID INT;
DECLARE exit handler FOR sqlexception
BEGIN
ROLLBACK;
SET p_poruka='Greška! Unos podataka nije izvršen.';
SET p_status=0;
END;
SET names utf8;
SET v_FunkcijaID=F_GET_FUNKCIJA_ID(p_NazivFunkcije);
SET autocommit=0;
START TRANSACTION;
INSERT INTO NASTAVNIK_FUNKCIJA(NastavnikID, FunkcijaID, DatumIzboraNaFunkciju, DatumOd, DatumDo) VALUES (p_NastavnikID, v_FunkcijaID, p_DatumIzboraNaFunkciju, p_DatumOd, p_DatumDo);
commit;
SET p_poruka='Unos podataka je uspešno izvršen!';
SET p_status=1;
END
Imam i jednu proceduru kojom pozivam ovu proceduru (radi testiranja):
-- Routine DDL
-- --------------------------------------------------------------------------------
DELIMITER $$
CREATE DEFINER=`root`@`%` PROCEDURE `new_routine`()
BEGIN
CALL sluzba.SP_NASTAVNIK_FUNKCIJA_INSERT(@p_status, @p_poruka, 179, 'Šef katedre', '2010-11-1', '2010-11-1', '2010-11-14');
SELECT @p_status, @p_poruka;
END
E sad kad ovako pozovem pojavim mi se poruka p_status - blob i p_poruka - ?, 'Greška! Unos podataka nije izvršen.'
Ako izmenim ovu prethodnu proceduru u:
-- Routine DDL
-- --------------------------------------------------------------------------------
DELIMITER $$
CREATE DEFINER=`root`@`%` PROCEDURE `new_routine`()
BEGIN
DECLARE p_status INT;
DECLARE p_poruka VARCHAR(255);
CALL sluzba.SP_NASTAVNIK_FUNKCIJA_INSERT(p_status, p_poruka, 179, 'Šef katedre', '2010-11-1', '2010-11-1', '2010-11-14');
SELECT p_status, p_poruka;
END
Onda mi se lepo ispisuje p_status - 0 i p_poruka - ?, 'Greška! Unos podataka nije izvršen.'
Primećujete da je razlika što u prvom pozivu mi je p_status-blob a u drugom p_status - 0.
U čemu je fora sa ovim znakom @ ispred?