T-SQL: problème avec string concat
J'ai un ensemble de fichiers audio avec des noms GreenLine1.mp3, GreenLine2.mp3 e.t.c. Je vais les écrire dans un tableau comme une GOUTTE (j'utilise MS SQL Server'08), voici ma requête sql:
DECLARE @aud AS VARBINARY(MAX)
DECLARE @num AS INT
-- Load the audio data
SET @num=1
WHILE (@num<38)
BEGIN;
SELECT @aud = CAST(bulkcolumn AS VARBINARY(MAX))
FROM OPENROWSET(
BULK
'C:\Users\Ilya\folder\GreenLine' + CAST(@num AS VARCHAR) + '.mp3',
SINGLE_BLOB ) AS x
-- Insert the data to the table
INSERT INTO Mb2.dbo.Audios (Id, [Content])
SELECT NEWID(), @aud
SET @num = @num + 1
END;
J'ai une erreur: syntaxe Incorrecte près de '+', expecting ',' or ')'.
Si j'essaie d'écrire
'C:\Users\Ilya\folder\GreenLine' +
CAST(@num as VARCHAR) + '.mp3'
dans une variable et de le mettre en VRAC après, je reçois une syntaxe Incorrecte près de @variable, CHAÎNE attendue, ou TEXT_LEX
OriginalL'auteur Ilya Blokh | 2011-07-08
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas paramétrer ou concaténer les paramètres de OPENROWSET. Il est constant que de valeurs.
Vous aurez à utiliser le SQL dynamique et d'une table temporaire, ou envisager d'utiliser SSIS par exemple
OriginalL'auteur gbn
Cet article m'a orienté dans la bonne direction quand j'ai eu le même problème avec OPENQUERY:
https://web.archive.org/web/20120724073530/http://consultingblogs.emc.com/jamespipe/archive/2007/06/28/SQL-Server-2005_3A00_-Passing-variables-into-an-OPENQUERY-argument.aspx
Fondamentalement, vous pouvez renvoyer l'ensemble de la déclaration d'une variable (de type nvarchar), y compris la fonction openrowset, et exécuter
exec sp_executesql @sql
. Il fait un peu moche à lire à travers le'
s bien, parce que vous aurez à s'échapper avec''
.mis à jour.
OriginalL'auteur Trey Mack