MySQL Forums
Forum List  »  Stored Procedures

call stored procedure retun value null
Posted by: david riccardo
Date: January 24, 2014 02:29AM

Hi,
I created this stored procedure:
DELIMITER $$

CREATE DEFINER=`mysqluser`@`%` PROCEDURE `SP_PORTAFOGLIO_OPEN_ORDER`(IN I_id_testa INT(11), IN
I_DataOra_aper DATETIME,IN I_Valore_lotto_std DECIMAL(12,6), OUT Open_order_ TEXT, OUT PL DECIMAL(12,6))
BEGIN

DECLARE V_Anno int(11) ;
DECLARE V_Mese int(11) ;
DECLARE V_Settimana int(11) ;
DECLARE V_ID_testa int(11) ;
DECLARE V_Strategy_key varchar (1000);
DECLARE V_EA varchar (20);
DECLARE V_Valuta varchar (8);
DECLARE V_Operazione varchar (50);
DECLARE V_Ordine INT(11) ;
DECLARE V_Lotti DECIMAL(12,6);
DECLARE V_Risultato DECIMAL(12,6);
DECLARE V_Saldo DECIMAL(12,6);
DECLARE V_Prezzo DECIMAL(12,6);
DECLARE V_Saldo_tmp DECIMAL(12,6) DEFAULT 0;
DECLARE V_RESA DECIMAL(12,6);
DECLARE V_SYS CHAR (6) ;
DECLARE n INT(11) DEFAULT 1;
DECLARE V_Periodo varchar (100);
DECLARE V_Tipo_analisi varchar (100);
DECLARE V_Deposito_ini DECIMAL(12,6);
DECLARE V_DataOra_aper Datetime;
DECLARE Lotti_new DECIMAL(12,6) ;
DECLARE V_prezzo_aper DECIMAL(12,6) ;
DECLARE Valore_lotto_std DECIMAL(12,6) DEFAULT 100000;
DECLARE PL_ DECIMAL(12,6) DEFAULT 0;
DECLARE V_PL DECIMAL(12,6) DEFAULT 0 ;
DECLARE Open_order_ TEXT DEFAULT "";
DECLARE V_Open_price DECIMAL(12,6) ;


set n =1;
BEGIN
DECLARE no_more_rows INT DEFAULT 0;
DECLARE cursor1 CURSOR FOR
SELECT portafoglio_ordini.Ordine,portafoglio_ordini.Operazione, portafoglio_ordini.EA,`portafoglio_ordini`.`Valuta`,
sym.Price_open,portafoglio_ordini.prezzo_aper,
sum(
IFNULL(
CASE WHEN portafoglio_ordini.Operazione ='buy' THEN (sym.Price_open - portafoglio_ordini.prezzo_aper)* I_Valore_lotto_std * portafoglio_ordini.Lotti_new
else (portafoglio_ordini.prezzo_aper- sym.Price_open)* I_Valore_lotto_std * portafoglio_ordini.Lotti_new end
,0)
) AS PL
FROM portafoglio_ordini inner join sym on (portafoglio_ordini.DataOra_aper=sym.datetime AND portafoglio_ordini.Valuta = sym.Symbol)
WHERE portafoglio_ordini.DataOra_aper <= I_DataOra_aper
AND portafoglio_ordini.DataOra_chiu > I_DataOra_aper
AND portafoglio_ordini.Ordine_incluso ="SI"
AND ID_testa = I_id_testa;


DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET no_more_rows = 1;
/* Apro il cursorere e mi giro tutte i record */
OPEN cursor1;
REPEAT
FETCH cursor1 INTO V_Ordine, V_Operazione,V_EA, V_Valuta,V_Open_price, V_prezzo_aper, V_PL;
IF NOT no_more_rows THEN




SET Open_order_ = CONCAT( Open_order_, '[',V_Ordine,'-', V_Operazione,'-',V_EA,'-',V_Valuta,'-',V_Open_price,'-',V_prezzo_aper,'-', V_PL,']');
SET PL_ = PL_ + V_PL;



set n = n +1;
END IF;
UNTIL no_more_rows
END REPEAT;
CLOSE cursor1;
END;

select Open_order_ , PL_ ;

I call it with this syntax:
CALL SP_PORTAFOGLIO_OPEN_ORDER (I_id_testa , V_DataOra_aper, Valore_lotto_std, @Open_order ,@PL );
SELECT @Open_order ,@PL;

I have this result:
Open_order_ [1-buy-EA Trend Followin-EURUSD-1.327160-1.327260-0.000000]
PL_ 0.000000

@Open_order null
@PL null

Why do i have return null? where am I wrong?
thank you very much

Options: ReplyQuote


Subject
Views
Written By
Posted
call stored procedure retun value null
1964
January 24, 2014 02:29AM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.