2011-07-08 25 views
8

GreenLine1.mp3, GreenLine2.mp3 e.t.c adları olan bir ses dosyaları kümem var. '+', Bekliyor yakınında yanlış sözdizimi '': Ne bir hata varT-SQL: string concat ile sorun

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; 

: Ben bir tablo BLOB olarak (MS SQL Server'08 kullanın) içine yazacağım, burada benim sql isteği var veya ')'. Bir değişkene

'C:\Users\Ilya\folder\GreenLine' + CAST(@num AS VARCHAR) + '.mp3'

yazıp DÖKME sonra koymak çalışırsanız

, ben @variable, beklenen STRING yakınında yanlış sözdizimi olsun veya TEXT_LEX

cevap

11

Sen parametrelendirmek veya bitiştirmek olamaz OPENROWSET parametreleri. Sadece sabit değerlerdir.

Dinamik SQL ve geçici bir tablo kullanmak veya örneğin SSIS kullanma dikkate almak gerekir

ben OPENQUERY ile aynı sorunu vardı, bu makale bana doğru yönde işaret
5

:

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

Temel olarak, tüm deyimi openrowset dahil olmak üzere bir değişken (nvarchar) içinde sarın ve exec sp_executesql @sql'u çalıştırın. ' s etrafında okumak için biraz çirkin olur, çünkü '' ile onları kaçmak zorunda kalacağız.

+0

Bağlantı kesildi. Bu yüzden linkler – Beanwah

+1

@Beanwah güncellendi. –