Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Ritorno di Table da una stored
martedì 27 maggio 2008 - 17.43
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
squilibrium
Profilo
| Junior Member
168
messaggi | Data Invio:
mar 27 mag 2008 - 17:43
Ciao a tutti
qualcuno sa come è possibile far tornare un parametro di tipo "Table" da una stored procedure con sql server 2005?
Grazie
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mar 27 mag 2008 - 18:09
>Ciao a tutti
Ciao!
>
>qualcuno sa come è possibile far tornare un parametro di tipo
>"Table" da una stored procedure con sql server 2005?
SQL Server 2005 non supporta il passaggio di parametri di tipo table.
Ti consiglio di fare una stored procedure che alla fine fa una SELECT che ti torna un resultset da gestire come se fosse effettivamente una tabella
Al contrario, SQL Server 2008 consentirà il passaggio di parametri di tipo TABLE.
>
>Grazie
di nulla!
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
squilibrium
Profilo
| Junior Member
168
messaggi | Data Invio:
mer 28 mag 2008 - 13:56
Quindi è possibile far tornare una Table da un funzione ma non da una stored?
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mer 28 mag 2008 - 14:17
>Quindi è possibile far tornare una Table da un funzione ma non
>da una stored?
una funzione torna una TABLE perchè è una TABLE VALUED FUNCTION. Torna proprio la table.
I parametri delle stored procedure non possono essere mai TABELLE fino alla versione 2005 compresa. Da 2008 (READONLY) ma si potranno avere.
Se a te serve una table da utilizzare all'interno di una logica (join, altre query, subquery, ecc) devi usare la funzione, oppure capire se ci sono altre strade. Prova ad illustrare la situazione reale, quello che devi fare. Magari si può seguire un'altra strada..
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
squilibrium
Profilo
| Junior Member
168
messaggi | Data Invio:
mer 28 mag 2008 - 14:29
In realtà il problema è gia stato risolto ma la curiosità mi era rimasta..
Una collega stava modificando una function che aveva una table come valore di ritorno ma le modifiche che doveva fare in realtà non erano adatte ad una funzione in quanto scriveva e leggeva da diverse tabelle del DB e creava delle tabelle temporanee (cosa non permessa in una function).
Le ho suggerito di convertire la funzione in una stored ma ovviamente al momento di ritornare il valore non consentiva il ritorno di una table.
Alla fine è stata costretta a tornare un set di dati, dall'esterno si richiama la stored e inserisce il risultato su una variabile di tipo Table.
Mi sono però continuato a domandare perchè non fosse possibile tornare una table da una stored mentre da una function si.
Se hanno integrato questa funzionalità in Sql Server 2008 suppongo che sia semplicemente una carenza del 2005
grazie
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mer 28 mag 2008 - 14:51
>Mi sono però continuato a domandare perchè non fosse possibile
>tornare una table da una stored mentre da una function si.
>Se hanno integrato questa funzionalità in Sql Server 2008 suppongo
>che sia semplicemente una carenza del 2005
No no, il problema è diverso..
la funzione che torna una TABLE viene usata proprio come tabella all'interno dei nostri statement sql. E poi una funzione è un sottoprogramma fatto proprio per "RITORNARE" qualcosa. Infine con la funzione non puoi fare modifiche sugli oggetti.
Una stored procedure è proprio un'altra cosa. Non è fatta per quello. Intanto non "torna" qualcosa (se non un intero che è il risultato - 0 tutto ok, o numero di errore). E' proprio un sottoprogramma che "fa qualcosa" e può anche modificare dati e strutture. Poi puoi decidere di utilizzare dei parametri di output, ma quello non è il ritorno della stored procedure, si tratta di passaggio di parametri.
In SQL Server 2008, i parametri di tipo table sono READONLY (va proprio indicato), questo significa che puoi solo passarlo per consumarlo all'interno della procedura.
>
>grazie
di nulla!
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !