我在.net2003服务器资源管理器环境里面建立了存储过程
如下:
ALTER PROCEDURE dbo.searchcompany
(
  @keyword char(50)
)
AS
  SET NOCOUNT ON
  select * from company
  where companyname like '%' + @keyword +'%'
  RETURN @@error 
从网上看了很多例子,确实用存储过程实现模糊查询就是这样写的。
实际运行的时候,如果我关键字填写单位全称,那么可以查询出来,如果只填写“有限公司”这样的查询条件,什么都没有。实在令人郁闷,到底错误在什么地方呢?

解决方案 »

  1.   

    ALTER PROCEDURE dbo.searchcompany
    (
      @keyword char(50)
    )
    AS
      SET NOCOUNT ON
    declare @keystr varchar(10)
    set @keystr='%'+@keyword
      select * from company
      where companyname like @keystr
      RETURN @@error 
    这样试下看
      

  2.   

    哦,搞错少加个
    ALTER PROCEDURE dbo.searchcompany
    (
      @keyword char(50)
    )
    AS
      SET NOCOUNT ON
    declare @keystr varchar(10)
    set @keystr='%'+cast(@keyword as varchar(10))
      select * from company
      where companyname like @keystr
      RETURN @@error 
      

  3.   

    设置断点单步跟踪,获取sql语句,在pl/sql执行看结果,找出原因,自己要会单步调试
      

  4.   

    你把@keyword char(50) 改为: @keyword varchar(50)
      

  5.   

    char改为varchar
    用char的话,后面有一堆空格