2011-07-08 11 views
8

के साथ समस्या मेरे पास ऑडियो फाइलों का एक सेट है GreenLine1.mp3, GreenLine2.mp3 e.t.c. मैं उन्हें एक मेज ब्लॉब के रूप में (मैं एमएस एसक्यूएल Server'08 का उपयोग करें) में लिखने के लिए जा रहा हूँ, यहाँ मेरी एसक्यूएल अनुरोध है:टी-एसक्यूएल: स्ट्रिंग कॉन्सट

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'

लिखने और बल्क के बाद यह डाल करने के लिए प्रयास करते हैं, मैं @variable, उम्मीद STRING के पास गलत वाक्य रचना मिलता है, या TEXT_LEX

उत्तर

11

आप parametrise या जोड़ नहीं कर सकते OPENROWSET के पैरामीटर। यह केवल स्थिर मूल्य है।

आप गतिशील एसक्यूएल और एक अस्थायी तालिका, का उपयोग करें या उदाहरण के लिए लघु उद्योगों के उपयोग पर विचार करना होगा

5

यह लेख मुझे सही दिशा में इशारा किया जब मैं 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

असल में, आप पूरे कथन को एक परिवर्तनीय (nvarchar) में खोल सकते हैं, जिसमें ओपनरोसेट शामिल है, और exec sp_executesql @sql चलाएं। ' एस के आसपास पढ़ने के लिए थोड़ा बदसूरत हो जाता है, क्योंकि आपको उन्हें '' से बचाना होगा।

+0

लिंक तोड़ दिया गया है। यही कारण है कि लिंक – Beanwah

+1

@Beanwah चूसना चूसना। –

संबंधित मुद्दे