查询返回正确的结果,存储过程没有。需要第二组眼睛

时间:2011-08-30 15:17:32

标签: sql sql-server-2005 tsql

我的查询:

select
  *
from
  meet_cert_credit
where
  conf_number = '1132'
  and type_of_professional = 'Certified Hazardous Materials Managers'

我的存储过程:

ALTER PROCEDURE [dbo].[sp_check_credit_info] 

@cn varchar = NULL,
@top varchar = NULL
AS
BEGIN
SET NOCOUNT ON;

select 
    * 
from 
    meet_cert_credit 
where 
    Conf_number = @cn 
    and type_of_professional = @top
END

调用我的存储过程:

exec sp_check_credit_info '1132', 'Certified Hazardous Materials Managers'

运行查询时,它会返回结果。运行存储过程时,我什么都没得到。

我疯了吗?

1 个答案:

答案 0 :(得分:9)

您需要为varchar存储过程参数指定长度。

e.g。使用@cn varchar(30)而不是@cn varchar

目前传入的所有内容都被截断为1个字符,因此您实际上正在进行以下搜索。

select 
    * 
from 
    meet_cert_credit 
where 
    Conf_number = '1' 
    and type_of_professional = 'C'

因此没有结果。