Problema con sp_executesql

lunedì 10 dicembre 2007 - 14.20

jordi75 Profilo | Junior Member

Ciao,
ho la necessità di fare una serie di insert in una tabella senza conoscere a priori il numero dei campi interessati.
Per fare ciò ho creato una stored procedure che mi costruisce la stringa sql dinamicamente inserendomi i campi necessari e i valori.

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

in cui @SQLSTRCAMPI è una stringa con l'elenco dei campi e @SQLSTRVALORI è l'elenco dei parametri

ES:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

vado quindi a eseguire sp_executesql in questo modo:

EXEC SP_EXECUTESQL @SQLSTR,
@SQLSTRPARAM,
@SQLSTRPARVAL

dove @SQLSTRPARAM è la stringa con la definizione dei parametri
ES:
@IDMATRICE NVARCHAR(4000), @SEQUENZA INT,@00007 NVARCHAR(50),@00011 NVARCHAR(50)

e @SQLSTRPARVAL è la stringa che contiene i valori dei parametri
Es:
14,2,242,333

Quest'ultimo parametro credo sia il problema. Da quello che ho capito non posso passare i valori come una variabile stringa,o sbaglio?

C'è modo di passare i valori a sp_executesql senza specificarli parametro per parametro?

Grazie

alx_81 Profilo | Guru

>Ciao,
Ciao!

>C'è modo di passare i valori a sp_executesql senza specificarli
>parametro per parametro?
no, funziona solo se passi parametri e valori..

Per farla come vuoi tu puoi semplicemente fare sql dinamico, concatenando i valori e lanciare il tuo statement sempre con la sp_ExecuteSQL, ad esempio:

DECLARE @StatementCreato varchar(2000) SET @StatementCreato = 'INSERT INTO Tabella (' + @campi + ') VALUES (' +@valori + ')' EXEC sp_ExecuteSQL @StatementCreato
>
>Grazie
di nulla
Alx81 =)

http://blogs.dotnethell.it/suxstellino
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5