stored procedure

Mattepuffo's logo
Sql Server Stored Procedure condizionali

Sql Server Stored Procedure condizionali

Oggi ho creato la mia SP condizionale.

Devo dire che creare SP in Sql Server è più facile e immediato che in MySQL.

Lo scenario è questo: sito web in Asp.NET e C# con GridView e 4 DropDownList che fanno da filtro.

I filtri possono essere anche composti; le opzioni erano due:

  • una SP per ogni condizione
  • una SP con IF - ELSE if

Ho scelto la seconda strada.

In pratica mi sono scritto una mia classe con un metodo al quale passo dei paramentri (che corrispondo ai valori delle DDL).

Il metodo lo carico tramite ObjectDataSource.

Mattepuffo's logo
MySQL Stored Procedure

MySQL Stored Procedure

Dopo aver parlato delle viste affronto il "problema" delle Stored Procedure (SP) in MySQL.

Le SP portanto diversi vantaggi, tra i quali la velocità di esecuzione spicca sugli altri.

Le SP sono più veloci in quanto rimangono nella cache del server e quindi sono più veloci se devono essere richiamate spesso.

Inoltre tutta la logica di esecuzione è lasciata al db separando così i dati dal codice (PHP, Java, C#, ecc....vale per tutti).

I maggiori punti a sfavore derivano dal fatto che non è sempre facile scrivere un layer di astrazione nei vari linguaggi e che non è possibile effetturane il debug.

Per quanto riguarda il primo punto, ciò deriva dal fatto che MySQL non ha una stretta interazione come succede con SQL Server e Asp.NET.

Comunque vediamo come gestire le SP.

Prima di tutto la creazione; connettiamoci al db e scriviamo:

mysql> DELIMITER //
mysql> CREATE PROCEDURE getBook()
-> BEGIN
-> SELECT * FROM book;
-> END//
Query OK, 0 rows affected (0.02 sec)

mysql> DELIMITER ;

DELIMITER // serve per cambiare il delimitatore di fine comando; in questo caso ho impostato // ma può essere uno qualsiasi.

Alla fine ho reimpostato quello tradizionale (il ;).

Si tratta di una vera e propria istruzione; sembra una funziona in VB......

Le istruzioni che ci interessano vanno dentro il blocco BEGIN-END.

getBook() è il nome che gli ho assegnato io; le parenetsi sono obbligatorie proprio come in una funzione/metodo in un linguaggio, e questo perchè è possibile passrgli dei parametri (li vedremo dopo).

Mattepuffo's logo
Inserimento dati con Stored Procedure in Asp.NET

Inserimento dati con Stored Procedure in Asp.NET

E' stata una dura lotta tra me e chiccosimo (utente del forum aspitalia) contro un FormView e l'inserimento dati in un db Sql Server.

Il problema era che i campi FK di questa tabella finiscono con # e questo creava probemi con l'inserimento attraverso FormView.

Abbiamo provato con dei metodi per valorizzare quei text box ma senza risultato.

Alla fine ho risolto facendo tutto a mano.

Dentro la pagina ho creato questa tabella:

<asp:Table ID="insertForm" runat="server">
<asp:TableRow runat="server">
<asp:TableCell runat="server">Descrizione:
</asp:TableCell>
<asp:TableCell runat="server">
<asp:TextBox ID="descrizione" runat="server">0</asp:TextBox>
</asp:TableCell>
</asp:TableRow>
<asp:TableRow ID="TableRow1" runat="server">
<asp:TableCell ID="TableCell1" runat="server">Gruppo#:
</asp:TableCell>
<asp:TableCell ID="TableCell2" runat="server">
<asp:TextBox ID="gruppo" runat="server">69</asp:TextBox>
</asp:TableCell>
</asp:TableRow>
<asp:TableRow ID="TableRow2" runat="server">
<asp:TableCell ID="TableCell3" runat="server">Tipo deploy#:
</asp:TableCell>
<asp:TableCell ID="TableCell4" runat="server">
<asp:TextBox ID="tipo_deploy" runat="server">3</asp:TextBox>
</asp:TableCell>
</asp:TableRow>
<asp:TableRow ID="TableRow3" runat="server">
<asp:TableCell ID="TableCell5" runat="server">Localita:
</asp:TableCell>
<asp:TableCell ID="TableCell6" runat="server">
<asp:TextBox ID="localita" runat="server">0</asp:TextBox>
</asp:TableCell>
</asp:TableRow>
<asp:TableRow ID="TableRow4" runat="server">
<asp:TableCell ID="TableCell7" runat="server">IP:
</asp:TableCell>
<asp:TableCell ID="TableCell8" runat="server">
<asp:TextBox ID="ip" runat="server">0</asp:TextBox>
</asp:TableCell>
</asp:TableRow>
<asp:TableRow ID="TableRow5" runat="server">
<asp:TableCell ID="TableCell9" runat="server">Riserva:
</asp:TableCell>
<asp:TableCell ID="TableCell10" runat="server">
<asp:TextBox ID="riserva" runat="server">0</asp:TextBox>
</asp:TableCell>
</asp:TableRow>
<asp:TableRow ID="TableRow6" runat="server">
<asp:TableCell ID="TableCell11" runat="server">Tipo connessione#:
</asp:TableCell>
<asp:TableCell ID="TableCell12" runat="server">
<asp:TextBox ID="tipo_connessione" runat="server">3</asp:TextBox>
</asp:TableCell>
</asp:TableRow>
<asp:TableRow ID="TableRow7" runat="server">
<asp:TableCell ID="TableCell13" runat="server">TGU:
</asp:TableCell>
<asp:TableCell ID="TableCell14" runat="server">
<asp:TextBox ID="tgu" runat="server">0</asp:TextBox>
</asp:TableCell>
</asp:TableRow>
<asp:TableRow ID="TableRow8" runat="server">
<asp:TableCell ID="TableCell15" runat="server">IP inizio range:
</asp:TableCell>
<asp:TableCell ID="TableCell16" runat="server">
<asp:TextBox ID="ip_inizio_range" runat="server">0</asp:TextBox>
</asp:TableCell>
</asp:TableRow>
<asp:TableRow ID="TableRow9" runat="server">
<asp:TableCell ID="TableCell17" runat="server">IP fine range:
</asp:TableCell>
<asp:TableCell ID="TableCell18" runat="server">
<asp:TextBox ID="ip_fine_range" runat="server">0</asp:TextBox>
</asp:TableCell>
</asp:TableRow>
<asp:TableRow ID="TableRow10" runat="server">
<asp:TableCell ID="TableCell19" runat="server">Subnet:
</asp:TableCell>
<asp:TableCell ID="TableCell20" runat="server">
<asp:TextBox ID="subnet" runat="server">0</asp:TextBox>
</asp:TableCell>
</asp:TableRow>
<asp:TableRow ID="TableRow11" runat="server">
<asp:TableCell ID="TableCell21" runat="server">Gateway:
</asp:TableCell>
<asp:TableCell ID="TableCell22" runat="server">
<asp:TextBox ID="gateway" runat="server">0</asp:TextBox>
</asp:TableCell>
</asp:TableRow>
<asp:TableRow ID="TableRow12" runat="server">
<asp:TableCell ID="TableCell23" runat="server">Traffico prepagato:
</asp:TableCell>
<asp:TableCell ID="TableCell24" runat="server">
<asp:TextBox ID="traffico_prepagato" runat="server">0</asp:TextBox>
</asp:TableCell>
</asp:TableRow>
<asp:TableRow ID="TableRow13" runat="server">
<asp:TableCell ID="TableCell25" runat="server">Costo traffico eccesso:
</asp:TableCell>
<asp:TableCell ID="TableCell26" runat="server">
<asp:TextBox ID="costo_traffico_eccesso" runat="server">0</asp:TextBox>
</asp:TableCell>
</asp:TableRow>
<asp:TableRow ID="TableRow14" runat="server">
<asp:TableCell ID="TableCell27" runat="server">Costo forfait:
</asp:TableCell>
<asp:TableCell ID="TableCell28" runat="server">
<asp:TextBox ID="costo_forfait" runat="server">0</asp:TextBox>
</asp:TableCell>
</asp:TableRow>
<asp:TableRow ID="TableRow15" runat="server">
<asp:TableCell ID="TableCell29" runat="server">IP router:
</asp:TableCell>
<asp:TableCell ID="TableCell30" runat="server">
<asp:TextBox ID="ip_router" runat="server">0</asp:TextBox>
</asp:TableCell>
</asp:TableRow>
<asp:TableRow ID="TableRow16" runat="server">
<asp:TableCell ID="TableCell31" runat="server">IP watchdog
</asp:TableCell>
<asp:TableCell ID="TableCell32" runat="server">
<asp:TextBox ID="ip_watchdog" runat="server">0</asp:TextBox>
</asp:TableCell>
</asp:TableRow>
<asp:TableRow ID="TableRow17" runat="server">
<asp:TableCell ID="TableCell33" runat="server">IP ups
</asp:TableCell>
<asp:TableCell ID="TableCell34" runat="server">
<asp:TextBox ID="ip_ups" runat="server">0</asp:TextBox>
</asp:TableCell>
</asp:TableRow>
<asp:TableRow ID="TableRow18" runat="server">
<asp:TableCell ID="TableCell35" runat="server">IP camera
</asp:TableCell>
<asp:TableCell ID="TableCell36" runat="server">
<asp:TextBox ID="ip_camera" runat="server">0</asp:TextBox>
</asp:TableCell>
</asp:TableRow>
<asp:TableRow ID="TableRow19" runat="server">
<asp:TableCell ID="TableCell37" runat="server">Directory satellite:
</asp:TableCell>
<asp:TableCell ID="TableCell38" runat="server">
<asp:TextBox ID="directory_satellite" runat="server">0</asp:TextBox>
</asp:TableCell>
</asp:TableRow>
<asp:TableRow ID="TableRow20" runat="server">
<asp:TableCell ID="TableCell39" runat="server">Directory monitor:
</asp:TableCell>
<asp:TableCell ID="TableCell40" runat="server">
<asp:TextBox ID="directory_monitor" runat="server">0</asp:TextBox>
</asp:TableCell>
</asp:TableRow>
<asp:TableRow ID="TableRow21" runat="server">
<asp:TableCell ID="TableCell41" runat="server">Tipologia monitor#:
</asp:TableCell>
<asp:TableCell ID="TableCell42" runat="server">
<asp:TextBox ID="tipologia_monitor" runat="server">2</asp:TextBox>
</asp:TableCell>
</asp:TableRow>
<asp:TableRow ID="TableRow22" runat="server">
<asp:TableCell ID="TableCell43" runat="server">Submit
</asp:TableCell>
<asp:TableCell ID="TableCell44" runat="server">
<asp:Button ID="Submit" runat="server" Text="Submit" OnClick="insertData" />
</asp:TableCell>
</asp:TableRow>
</asp:Table>