簡體   English   中英

需要varchar參數的SQL Server存儲過程未按預期工作

[英]SQL Server stored procedure that requires varchar param not working as expected

我對SQL還是很陌生,所以請原諒任何無知的問題。

這是我的存儲過程:

ALTER PROCEDURE [dbo].[search_highlights]
    @page INT = 1,
    @recsPerPage INT = 20,
    @query NVARCHAR(MAX) = ''
AS
BEGIN
    SET NOCOUNT ON

    DECLARE @FirstRec AS INT = (@page - 1) * @recsPerPage,
            @LastRec AS INT = (@page * @recsPerPage + 1)

    SELECT
        [id],
        [datetime],
        [player_ids], [player_names],
        [headline], [duration],
        [blurb], [bigblurb],
        [thumb_s], [thumb_m], [thumb_l],
        [video_s], [video_m], [video_l],
        [gameid],
        [team_id], [team_name]
    FROM 
        (SELECT
             [id],
             [datetime],
             [player_ids], [player_names],
             [headline],
             [duration],
             [blurb], [bigblurb],
             [thumb_s], [thumb_m], [thumb_l],
             [video_s], [video_m], [video_l],
             [gameid],
             [team_id], [team_name],
             ROW_NUMBER() OVER (ORDER BY datetime DESC) AS rn
         FROM 
             [bbt].[dbo].[highlights]
         WHERE 
             CONTAINS((player_names, headline, blurb, bigblurb, team_name), @query)
        ) hp
    WHERE 
        rn BETWEEN @FirstRec AND @LastRec
    ORDER BY 
        datetime DESC
END

我試圖像這樣調用存儲過程:

EXEC [dbo].[search_highlights] 1, 20, '"double play"'

運行該命令時,出現以下錯誤:

消息7630,級別15,狀態2,過程dbo.search_highlights,第13行[批處理開始第0行]
在全文搜索條件“””中,“”附近的語法錯誤。

當我嘗試不帶" ,錯誤消失了,但是即使我應該得到結果,也沒有得到結果。

救命?

在SQL Server中,您需要定義字符串的長度(在大多數情況下,默認值是1)。

因此,將存儲過程定義為:

ALTER PROCEDURE [dbo].[search_highlights] (
    @page int = 1,
    @recsPerPage int = 20,
    @query VARCHAR(max) = ''
) AS . . .

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM