Chiamare Stored Procedure

La discussione sul CMS Made Simple in italiano.

Moderator: magallo

Post Reply
nervino
Power Poster
Power Poster
Posts: 448
Joined: Sun Dec 28, 2008 12:15 pm

Chiamare Stored Procedure

Post by nervino »

Ciao a tutti,

problema: non riesco a catturare i dati di una stored procedure.

Ho provato a creare una stored procedure sul DB (e a richiamarla da una pagina di un nuovo modulo di cmsms)

Code: Select all

CREATE PROCEDURE pippo()
SELECT * cms_module_provamodulo;
Quindi ho provato a richiamare la procedura per popolare un dropdown menu, in questo modo

Code: Select all

$db = &$gCms->GetDb();
$dbresult = $db->query("CALL pippo()");

while ($dbresult && $row2 = $dbresult->FetchRow())
  {
    $list[$row2['testo']] = $row2['provamodulo_id'];
	  }

$smarty->assign('start_form', $this->CreateFormStart($id, 'save_record', $returnid));
$smarty->assign('title_description',$this->Lang('title_description'));
$smarty->assign('input_description',$this->CreateInputDropdown($id,'nome_select',$list));

$smarty->assign('title_testo',$this->Lang('title_testo')); 
$smarty->assign('input_testo',$this->CreateInputText($id,'testo',$testo));

$smarty->assign('submit', $this->CreateInputHidden($id,'provamodulo_id',$sid).$this->CreateInputSubmit($id, 'submit', $this->Lang('submit')));
$smarty->assign('end_form', $this->CreateFormEnd());
Probabilmente sbaglio il modo di richiamare la procedura..?
alby

Re: Chiamare Stored Procedure

Post by alby »

[quote="nervino"]

Code: Select all

CREATE PROCEDURE pippo()
SELECT * cms_module_provamodulo;
Quindi ho provato a richiamare la procedura per popolare un dropdown menu, in questo modo

Code: Select all

$db = &$gCms->GetDb();
$dbresult = $db->query("CALL pippo()");

while ($dbresult && $row2 = $dbresult->FetchRow())
  {
    $list[$row2['testo']] = $row2['provamodulo_id'];
	  }
[/quote]

1. Hai provato a vedere cosa c'è in $row2?
2. Secondo me è: SELECT * FROM cms_module_provamodulo;

Alby
nervino
Power Poster
Power Poster
Posts: 448
Joined: Sun Dec 28, 2008 12:15 pm

Re: Chiamare Stored Procedure

Post by nervino »

In effetti quello che stavo provando a fare è:
1) creare una procedura che esegue una SELECT su una tabella
2) chiamare la procedura da un modulo di CMSMS e valorizzare un menu dropdown con il recordset generato dalla procedura stessa

Da quello che mi dici, e da altre indicazioni che ho trovato nelle specifiche MYSQL, credo di capire che una procedura che richiama SELECT come la stavo facendo, genera un errore. Infatti se chiamo CALL pippo() dalla shell di phpmyadmin mi dice:

Code: Select all

PROCEDURE test.pippo can't return a result set in the given context 
Ho capito bene o mi stavi dicendo un'altra cosa?

Grazie!
alby

Re: Chiamare Stored Procedure

Post by alby »

nervino wrote: Ho capito bene o mi stavi dicendo un'altra cosa?
No, un'altra cosa: vedo errori di sintassi (se è quella che hai postato).
Sicuramente il SELECT non va bene
Comunque bisogna stare attenti a molte condizioni, non ultima avere i privilegi per farlo (CREATE ROUTINE)

Non capisco però a cosa ti serve?

Alby
nervino
Power Poster
Power Poster
Posts: 448
Joined: Sun Dec 28, 2008 12:15 pm

Re: Chiamare Stored Procedure

Post by nervino »

Sto cercando di capire come funzionano i moduli e faccio un po' di prove. Sono partito da Skeleton e lo sto modificando.

Voglio creare una stored procedure in MYSQL (usando phpmyadmin, ad esempio) che selezioni tutti i dati di una tabella del DB test. Nell'esempio, ho creato la tabella "cms_module_provamodulo" che contiene i campi provamodulo_id, description e testo e con il recordset risultante dalla chiamata della procedura vorrei riempire un dropdown menu usando la funzione del cms CreateInputDropdown().
alby

Re: Chiamare Stored Procedure

Post by alby »

nervino wrote: Voglio creare una stored procedure in MYSQL
Quello che intendevo è: perchè vuoi usare le stored procedure che non tutti supportano o che bisogna modificare la sintassi?
O c'è un motivo particolare?

Perchè la CreateInputDropdown() la fai direttamente con una SELECT senza impegnare memoria inutilmente

Alby
nervino
Power Poster
Power Poster
Posts: 448
Joined: Sun Dec 28, 2008 12:15 pm

Re: Chiamare Stored Procedure

Post by nervino »

Solo per provare ad usare le STORED nel cms  ;D.
Devo sviluppare un'applicazione con un mio amico che si occupa di progettare il DB e che, in alcuni casi, le dovrà usare, quindi stavo provando partendo da una situazione "semplice" come una classica SELECT.

Il dropdown menu sono già riuscito a valorizzarlo cinserendo la query SELECT * FROM ecc. direttamente nel codice del modulo, senza SP  :).
(Mi sto divertendo 'na cifra! Le funzioni già pronte di CMSMS sono comodissime!!)
Post Reply

Return to “Italian - Italiano”