Back to top

Autore Topic: [risolto]leggere risultati stored procedure  (Letto 3239 volte)

Offline tavvolley

  • Nuovo arrivato
  • *
  • Post: 12
    • Mostra profilo
[risolto]leggere risultati stored procedure
« il: 12 Mag 2010, 12:04:27 »
salvea tutti!
 ho fatto la seguente stored procedure:

Codice: [Seleziona]
delimiter //
create procedure insertFile (
                               in orginalNamePass varchar(50)
                              ,in statePass varchar(45)
                              ,in deletedPass TINYINT(1)
                              ,in estensione varchar(4)
                              ,in sizePass int
                              ,in realNamePass varchar(50)
                              ,out risposta varchar(45)
                              ,out avviso varchar(100) )

begin

select ID into risposta
from jos_typedocument
where extension = estensione;

if risposta is null then

  insert into jos_file(originalName, state, deleted, typeDocumentID, size, realName)
    values (originalNamePass, statePass, 0, 0, sizePass, realNamePass);
  set avviso ='estensione sconoscita, e query ultimata';
else
  insert into jos_file(originalName, state, deleted, typeDocumentID, size, realName)
    values (originalNamePass, statePass, 0, risposta, sizePass, realNamePass);
  set avviso ='estensione riconosciuta, e query ultimata';
end if;
end//;
delimiter;

è stata testata in mysql e funziona ora vorrei richiamarla in joomla. Come posso ottenere i risultati della stored?
l'altra che utilizzo funziona ma non ho messo parametri di output ed è stata richimata col seguente codice:
Codice: [Seleziona]
$query = 'call miaStored('.$this->ID.')';
$this->_db->setQuery($query);
$this->_db->query();

ora dovrei cambiare il modo della chiamta?
potrebbe aiutarmi qualcuno?
Vi ringrazio in anticipo!!
« Ultima modifica: 14 Mag 2010, 09:04:48 da tavvolley »

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:leggere risultati stored procedure
« Risposta #1 il: 12 Mag 2010, 15:29:59 »
ciao,
ci sono un po' di cose che non mi quadrano:

1.
chiami la procedura insertFile e poi chiami miaStored (ma forse è solo l'esempio)

2.
il numero ed il tipo dei parametri non concordano

3.
sicuro che si possa usare set? io ho sempre usato select into.

per il resto mi sembra ok, anche se personalmente ritengo che il tipo di controllo sarebbe più opportuno a livello di bl che non di db.

ciao,
marco

mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline tavvolley

  • Nuovo arrivato
  • *
  • Post: 12
    • Mostra profilo
Re:leggere risultati stored procedure
« Risposta #2 il: 12 Mag 2010, 16:10:28 »
ti ringrazio della risposta!!
scusa la mia ignoranza ma cosa intendi con a livello bl  :-[!!
vai sicuro che ho chiamato la stored per bene, quello era solo un esempio.
la stored postata funziona solo che richiamandola in quel modo ottengo che la variabile che la contiene forse è un boolean.
chiarisco meglio:
io ho messo il seguente codice:
Codice: [Seleziona]
<?php
function inserimento(){
   
$query='call insertFile(....);';  
   
$this->_db->setQuery($query);
   
$rispValue=$this->_db->query();
   return 
$rispValue;
}
if(!
$this->inserimento()){
$this->setError($this->_db->getErrorMsg());
return false;

?>

in effetti esegue la stored ma il risultato è solo true o false a seconda se la stored è eseguita o meno e non restituisce nessun altro valore quindi penso che la variabile $rispValue sia un boolean.
Se volessi ottenere i valori delle variabili  di output della stored come dovrei fare ?
se riuscissi a leggere i valori di output mi farei restuire l'id del record appena inserito  ;D.
ho tentanto a mettere all'interno della stored anche
SELECT risposta, avviso ;
alla fine dell'IF (dopo end if;)
se la eseguo da mysqlAdmin ok mi restituisce il rigo ma io vorrei leggerlo in joomla!!
I dati che passo sono già controllati, quindi vorrei sapere se il db genera errore, infatti sto cercando informazioni sulla gestione degli errori di mysql, mi piacerebbe trovare qualcosa come il throws di java che propagasse l'errore su tutto in questo caso penso dovrebbe essere catturato dal metodo getErrorMsg().
« Ultima modifica: 13 Mag 2010, 15:38:29 da tavvolley »

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:leggere risultati stored procedure
« Risposta #3 il: 12 Mag 2010, 16:22:05 »
bl = business logic, hai ragione a volte dovrei essere meno criptico.

il metodo query() restituisce l'esito dell'operazione, non il risultato dalla stessa.

vedi docs.joomla.org/JDatabase per i metodi di accesso al recordset restituito (es loadObject)

SELECT LAST_INSERT_ID() INTO risposta;

ciao,
marco



« Ultima modifica: 12 Mag 2010, 19:43:29 da mmleoni »
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline tavvolley

  • Nuovo arrivato
  • *
  • Post: 12
    • Mostra profilo
Re:leggere risultati stored procedure
« Risposta #4 il: 13 Mag 2010, 08:43:44 »
si in effetti sbagliavo a richiamare la stored!! bastava solo mettere loadObject!!
esattamente ho dovuto mettere nella stored:
Codice: [Seleziona]
...
end if;
SELECT risposta, avviso;
end;


e richiamarla nel codice in questo modo:
Codice: [Seleziona]
$query = 'call insertFile('.$this->parametri().')';
$this->_db->setQuery($query);
$this->_db->loadObject();
grazie a tutti in paticolare a marco!! ;D
« Ultima modifica: 13 Mag 2010, 08:45:29 da tavvolley »

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:leggere risultati stored procedure
« Risposta #5 il: 13 Mag 2010, 09:08:23 »
ricordati il [RISOLTO] nel post di apertura...
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline tavvolley

  • Nuovo arrivato
  • *
  • Post: 12
    • Mostra profilo
Re:leggere risultati stored procedure
« Risposta #6 il: 13 Mag 2010, 15:29:10 »
scusa la mia poca praticità di questo forum dovrei modificare l'oggetto del del post oppure esiste un pulsante o qualche procedura da seguire che non conosco?  grazie per la pazienza. ;D

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:leggere risultati stored procedure
« Risposta #7 il: 13 Mag 2010, 23:57:24 »
no problem  ;)
devi modificare l'oggetto.
ciao.
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

 



Web Design Bolzano Kreatif