Creazione SP "super" parametrica

domenica 04 maggio 2008 - 19.35

motogpdesmo16 Profilo | Senior Member

Salve a tutti,
avrei bisogno di sapere se è possibile creare una stored procedure, da associare ad una specifica azione di uno user control in Visual Studio 2005, che funzioni in INSERT/UPDATE/DELETE ed accetti tre parametri: il nome della tabella da aggiornare, valore del campo1, valore del campo2.

Praticamente vorrei una sintassi tipo

Insert into @nometabella Values(@campo1, @campo2)


Chiaramente questa sintassi, così com'è, non può assolutamente funzionare.
E' possibile riuscire ad ottenere quello che vorrei??
Spero di essere stato chiaro nell'esposizione e ringrazio anticipatamente per le eventuali risposte che giungeranno.

[b]Nota1[/b]: @nometabella è una tabella che ha due soli campi: codice e descrizione
[b]Nota2[/b]: non mi va di scrivere la query o il codice direttamente nello user control perchè poi non potrei riutilizzarlo per tutte le tabelle che intendo popolare. Aggiungo anche che ci sono divese tabelle, con questa stessa struttura, da popolare e, a mio modo di vedere, quella della SP dovrebbe essere la soluzione ottimale.

alx_81 Profilo | Guru

>Salve a tutti,
Ciao!

>Chiaramente questa sintassi, così com'è, non può assolutamente
>funzionare.
esatto

>E' possibile riuscire ad ottenere quello che vorrei??
Se ti serve proprio quel risultato, l'unica è fare SQL Dinamico..
Puoi passare alla stored il nome tabella ed il nome dei campi e comporre all'interno della sp il comando da lanciare..
In generale sarebbe meglio evitare il sql dinamico, ma se proprio non puoi farne a meno, questa può essere una soluzione.

Una volta creata la stringa SQL da lanciare, puoi utilizzare la sp_executeSQL per eseguire il comando.
Alx81 =)

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

motogpdesmo16 Profilo | Senior Member

Immaginavo che la soluzione potesse essere quella di comporre la stringa sql e poi darla in pasto all'"executeSQL"...anche se era proprio quello che volevo evitare di fare.

Grazie comunque per la risposta che merita la reputazione positiva.

motogpdesmo16 Profilo | Senior Member

sempre relativamente a questo problema, mi rivolgo adesso a chi abbia anche conoscenze in visual studio 2005: nella tabella non sarà possibile inserire chiavi duplicate. Qualora l'utente inserisca per errore una chiave duplicata, sqlserver mi restituisce un errore in cui viene indicata la violazione commessa.
Esisterebbe la possibilità di recuperare il testo dell'errore e inserirlo in una label presente nella pagina web da mostrare all'utente??

Grazie.

alx_81 Profilo | Guru

>Esisterebbe la possibilità di recuperare il testo dell'errore
>e inserirlo in una label presente nella pagina web da mostrare
>all'utente??
certo, puoi
1) utilizzare il try catch da codice .Net e gestire la sqlexception visualizzando la proprietà message dell'oggetto eccezione.
2) usare lo statement TRY CATCH di dal server 2005 e nella CATCH ritornare la ERROR_MESSAGE() con una select. In quel modo ottieni un resultset con all'interno il messaggio d'errore.
>
>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
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 !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5