Store Procedure con input di array di stringhe
advapi non è online. Ultima attività: 14/07/2008 15.52.24advapi
Inserito il: 22 maggio 2008 10.00
lamiavitaintrycatch.wordpress.com / 23 messaggi dal 16 dic 2006 Istalla Microsoft Silverlight!
Ciao a tutti,
premetto che di SQL conosco ben poco, vi spiego il mio problema/dubbio, io ho una lista di parole che vanno ricercate in una tabella e avrei bisogno di ottenere indietro una lista con i nomi delle tabelle che sono inserite.
tralasciando i campi inutili della tabella la struttura è la seguente:


id (int) |
userid (int) | chiave primaria
description (nvarchar 256)


Io vorrei passare alla store procedure un array di stringhe che dovrebbero essere matchate su description e ottenere come risultato le entry che sono già presenti su DB.

Visto che la tabella diventerà grossa una volta riempita ,qual'è il modo più performante di eseguire questa ricerca? non ho inserito ancora nessun indice sulla tabella oltre che a quello di chiave primaria.

Grazie ciao
Paolo

Modificato da advapi il 22 maggio 2008 10.10 -
Microsoft Most Valuable Professional
Re: Store Procedure con input di array di stringhe
Andrea Montanari non è online. Ultima attività: 25/07/2008 12.34.34Andrea Montanari
Inserito il: 22 maggio 2008 13.05
contributi / Top Poster / Community manager / www.asql.biz / 907 messaggi dal 27 lug 2005 Istalla Microsoft Silverlight!
salve,
advapi wrote:
Ciao a tutti,
premetto che di SQL conosco ben poco, vi spiego il mio
problema/dubbio, io ho una lista di parole che vanno ricercate in una tabella e avrei bisogno di ottenere indietro una lista con i nomi delle tabelle che sono inserite. tralasciando i campi inutili della tabella la struttura è la seguente:

id (int) |
userid (int) | chiave primaria
description (nvarchar 256)

Io vorrei passare alla store procedure un array di stringhe che dovrebbero essere matchate su description e ottenere come risultato le entry che sono già presenti su DB.


al momento non e' ancora possibile passare un parametro di tipo table a stored procedures, cosa che sara' possibile con SQL Server 2008, e SQL Server non riconosce gli array in quanto tali.. ci sono pero' dei workaround che tendenzialmente accettano come parametro un varchar che sara' poi "separato" negli elementi dell'"array" all'interno del codice della procedura.. tali "elementi" solitamente vengono caricati in una tabella temporanea, e, nel tuo caso, potrai mettere in join tale tabella con la tua tabella originale..
trovi un esempio di questo concetto presso
http://vyaskn.tripod.com/passing_arrays_to_stored_procedures.htm e http://www.sqlmag.com/Articles/ArticleID/26244/26244.html?Ad=1 .. il secondo articolo richiede la sottoscrizione alla rivista..
vedi di non utilizzare il metodo basato su codice T-SQL dinamico in quanto puo' essere fonte di notevoli problematiche legate alla SQL-Injection (http://www.sommarskog.se/dynamic_sql.html)
saluti

Andrea Montanari (Microsoft MVP - SQL Server)
http://www.asql.biz - http://italy.mvps.org

Vai a:

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.


COMMUNITY
ULTIMI MESSAGGI


IN EVIDENZA
MISC
Powered by .db Forums