2012-06-25 16 views
1

我有了這一行的存儲過程:傳遞一個varchar類型參數和在集@SQL使用它

SET @SQL = 'SELECT path,title,tags 
      FROM (
        SELECT ROW_NUMBER() OVER(ORDER BY file_number) AS Row, * 
        FROM files) AS tbl 
      WHERE file_number IN (SELECT tag_file_number 
            FROM tags 
            WHERE tag LIKE ' + @Conditions + '), Row >= ' 
        + CONVERT(varchar(9), @StartIdx) + ' AND 
        Row <= ' + CONVERT(varchar(9), @EndIdx) 

我得到一個錯誤當我通過「總線」作爲參數值。我的目標是傳遞一段SQL查詢並將其替換爲@conditions

我也可能會傳遞'%bu%或標記像%time%或標記像%bus time%'我認爲這並不難,但我根本無法弄清楚。這是一個非常具體的問題,因此我甚至無法將它谷歌。請幫幫我。讓我知道你是否需要更多信息。

+1

類似聲明後在查詢中缺少引號。應該像'''+ @Conditions +''') –

+0

謝謝你指出。我現在明白了。 –

回答

1

你缺少引號,嘗試這樣的:

SET @SQL = 'SELECT path,title,tags 
     FROM (
     SELECT ROW_NUMBER() OVER(ORDER BY file_number) AS Row, * 
       FROM files) AS tbl WHERE file_number in(select tag_file_number from tags where tag like "' + @Conditions + '"), Row >= ' 
          + CONVERT(varchar(9), @StartIdx) + ' AND 
       Row <= ' + CONVERT(varchar(9), @EndIdx) 

現在正在發生的事情是where tag like bus,它必須是where tag like "bus"

+0

非常感謝!現在它爲我工作。基本上,我不知道如何使用嵌套引號。我感謝您的幫助。 –

+0

@AmandeepSaini然後你應該投票並接受答案:http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work –

+0

它說投票上來需要15聲望。我很抱歉,但我會盡可能。 –