我有这个存储过程:
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
出于某种原因,当我提交带有此值的参数时:'/programs/brainology-for-home.aspx'我无法获得任何结果。
直接在SSMS中执行相同的查询:
SELECT
ID, (Section + ' ID:' + CAST(ID As nvarchar(10))) AS Section
FROM
PagePartText
WHERE
[Page] = '/programs/brainology-for-home.aspx'
返回我需要的数据
知道我为什么无法使用存储过程获取数据?在存储过程中使用其他参数获取我(不同)数据集,但我不知道为什么我无法使用此特定参数获取所需数据,尽管它存在于db表中。
由于
答案 0 :(得分: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