Comment puis-je utiliser @var normal dans SQL dynamic

FOTOS est une table @pathcompleto est le path complet vers le file

set @insertvalues = 'insert into FOTOS values(@count, (SELECT BulkColumn FROM Openrowset( Bulk ''' + @pathcompleto + ''', Single_Blob) as img) , @url)' exec(@insertvalues) 

background: c'est dans une boucle et w autre chose mais le problème est qu'il dit @count n'est pas déclaré mais c'est. Je crois que c'est à cause de la dynamic sql (@url est aussi une erreur si je supprime @count)

comment puis-je faire ce travail? il pourrait fonctionner w sp_executesql mais je ne l'ai pas compris aussi bien pour l'utiliser ici

Vous voulez sp_executesql :

 set @insertvalues = ' insert into FOTOS SELECT @count, BulkColumn, @url FROM Openrowset( Bulk ''' + @pathcompleto + ''', Single_Blob) as img'; exec sp_executesql @insertvalues, N'@count int, @url varchar(max)', @count = @count, @url = @url; 

J'ai également simplifié l' INSERT pour en faire un INSERT . . . SELECT simple INSERT . . . SELECT INSERT . . . SELECT INSERT . . . SELECT .

Note: Je ne sais pas quels sont les types réels pour les colonnes. Ce qui précède est juste une supposition éclairée.

En outre, vous devez toujours inclure les noms de colonnes lorsque vous utilisez INSERT less que vous ne sachiez vraiment, vraiment, pourquoi vous utilisez le comportement par défaut.