字符串比较条件下如何从stored procedure(存储过程)获取输出结果?
问题解决方法
核心原因
你定义的@CityName参数未指定varchar类型长度,SQL Server在参数声明场景下未显式指定长度的varchar默认长度为1,你传入的城市名称会被截断为仅保留首字符,无法和表中完整的CityName值匹配,因此无返回结果。
修复方案
修改存储过程的参数声明,给@CityName指定和表中CityName字段完全一致的长度(比如表中字段为varchar(100),参数就对应设置为相同长度)即可,修正后的代码示例如下:
ALTER PROCEDURE [dbo].[PR_City_SelectByPK] @CityName varchar(100) -- 此处长度替换为你表中CityName字段的实际长度 AS SELECT [dbo].[City].[CityName], [dbo].[City].[State] FROM [dbo].[City] WHERE [dbo].[City].[CityName] = @CityName
额外排查建议
- 所有字符串类型的参数、变量声明都要显式指定长度,避免出现隐式截断问题
- 若修改后仍无返回结果,可先执行独立查询验证数据是否存在:
确认有返回结果后再调用存储过程验证。SELECT [CityName], [State] FROM [dbo].[City] WHERE [CityName] = '你要查询的城市名称'
内容的提问来源于stack exchange,提问作者Chaitanya Bathia
相关产品推荐
相关产品推荐

