0

我有這個存儲過程:SQL Server存儲過程不返回數據,儘管數據存在

ALTER PROCEDURE [dbo].[getAllSectionPartsForPage] 
    (@Page nvarchar(20)) 
AS 
BEGIN 
    SELECT 
     ID, (Section + ' ID:' + CAST(ID As nvarchar(10))) AS Section 
    FROM 
     PagePartText 
    WHERE 
     [Page] = @Page 
END 

因爲當我提交參數與此值某些原因:「/程序/ brainology換-home.aspx'我無法獲得任何結果。

直接執行相同的查詢在SSMS:

SELECT 
    ID, (Section + ' ID:' + CAST(ID As nvarchar(10))) AS Section 
FROM 
    PagePartText 
WHERE 
    [Page] = '/programs/brainology-for-home.aspx' 

返回數據,我需要

任何想法,爲什麼我不能使用存儲過程來獲取數據?在存儲過程中使用其他參數獲取我(不同)的一組數據,但我不確定爲什麼我無法使用此特定參數獲取我需要的數據,儘管它存在於數據庫表中。

感謝

+7

34個字符的字符串不適合20個字符。 –

+0

謝謝...漫長的一天 – Laziale

回答

2

輸入參數@Page nvarchar(20)到存儲過程並不能完全適應'/programs/brainology-for-home.aspx'

關注......

DECLARE @Page nvarchar(20) 
SET @Page = '/programs/brainology-for-home.aspx' 
PRINT '@Page = ''' + @Page + '''' 

結果:

@Page = '/programs/brainology'

您的輸入值正在截斷以適合定義的輸入參數大小。嘗試擴大@Page至少nvarchar(34)使這個特定的情況下工作,或者只是吹到nvarchar(max)並永遠不需要再考慮它。

ALTER PROCEDURE [dbo].[getAllSectionPartsForPage](@Page nvarchar(max)) 
AS 
BEGIN 
    SELECT ID, (Section + ' ID:' + CAST(ID As nvarchar(10))) AS Section FROM PagePartText WHERE [Page] = @Page 
END 
相關問題