2011-07-08 6 views
8

名前がGreenLine1.mp3、GreenLine2.mp3 e.t.cです。私は(私はMS SQL Server'08を使用)、ここに私のSQL要求だBLOBとしてテーブルにそれらを書くつもりです:T-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; 

私はエラーがあります。期待して、「+」の近くに不正な構文が「」または ')'。私は変数に

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

を書いて、BULK後にそれを置くしようとした場合、私は@variable、期待STRINGの近くに不適切な構文を取得

、またはTEXT_LEX

答えて

11

あなたはparametriseまたは連結することはできません。 OPENROWSETのパラメータ。定数値のみです。

あなたは、私がOPENQUERYと同じ問題が持っていたときに、この記事では、正しい方向に私を指摘

5

例えば、動的SQLおよび一時テーブルを使用する必要があり、またはSSISを使用することを検討します:

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

基本的に、文全体をopenrowsetを含む変数(nvarchar)にラップし、exec sp_executesql @sqlを実行することができます。あなたは''でエスケープしなければならないので、'の周りを読むのはちょっと醜いです。

+0

リンクが壊れています。だからこそリンクは – Beanwah

+1

@Beanwahを更新しました。 –

関連する問題