CREATE PROCEDURE dbo.GetVenName(@cName varchar(60))
as
select cVenName,cVenCode from Vendor
where cVenName lide '%'+@cName
GOor :CREATE PROCEDURE dbo.GetVenName(@cName char(60))
as
select cVenName,cVenCode from Vendor
where cVenName lide '%'+rtrim(@cName)
GO

解决方案 »

  1.   

    CREATE PROCEDURE dbo.GetVenName(@cName char(60))
    as
    exec('select cVenName,cVenCode from Vendor
    where cVenName like ''%'+@cName+'''')
    GO
      

  2.   

    like 后接的是一个字串,要用'%字串'这种格式
      

  3.   

    老兄,你的过程和我的一样啊,查不出来,查询分析器显示
    (所影响的行数为 0 行)
    顺便更正一下,上面的lide 应该为like
    帮助上说like 有char 和varchar 的区别,不知我的过程错在什么地方
      

  4.   

    psxfghost(哈哈) ,为什么要用exec呢?不影响速度吗?我看看能不能达到效果
      

  5.   

    它等效于:
    CREATE PROCEDURE dbo.GetVenName(@cName char(60))
    as
    declare @sql='select cVenName,cVenCode from Vendor
    where cVenName like ''%'+@cName+''''
    exec(@sql)
    GO具体你可以看一下帮助中exec的用法
      

  6.   

    ^_^更正一下:
    CREATE PROCEDURE dbo.GetVenName(@cName char(60))
    as
    declare @sql varchar(8000)
    set @sql='select cVenName,cVenCode from Vendor
    where cVenName like ''%'+@cName+''''
    exec(@sql)
    GO具体你可以看一下帮助中exec的用法
      

  7.   

    哈哈的也不行啊,怎么回事?
    下边是Vendor表
    001 沈阳铁合金厂                                                       沈铁 0101 NULL NULL NULL NULL 1102253341504 工行京昌支行 86730123 2001-10-22 00:00:00.000 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 001 NULL NULL NULL NULL NULL NULL NULL NULL NULL 0 NULL NULL NULL
    上边是一条记录
    002 海淀百货商场                                                       海淀百货 0201 NULL NULL NULL NULL 33625785532100 工行海淀支行 77999000 2001-10-22 00:00:00.000 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 002 NULL NULL NULL NULL NULL NULL NULL NULL NULL 0 NULL NULL NULL
    003 洛阳轴承厂                                                        洛轴 0102 NULL NULL NULL NULL 700812943100782 工行洛阳支行 360001234 2001-10-22 00:00:00.000 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 003 NULL NULL NULL NULL NULL NULL NULL NULL NULL 0 NULL NULL NULL
    004 沈阳胜利工厂                                                       胜利厂 0102 NULL NULL NULL NULL 010233511415054 工行四会支行 030112345 2001-10-22 00:00:00.000 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 004 NULL NULL NULL NULL NULL NULL NULL NULL NULL 0 NULL NULL NULL
    012 abcdef                                                       abc 0101 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 0.0 NULL 0.0 0 NULL NULL NULL NULL NULL NULL 0.0 NULL 0.0 NULL 0.0 NULL 0 0 NULL NULL NULL
    我直接用select * from Vendor where cVendorName like '%胜利'
    什么也查不到
      

  8.   

    第一个字段是cVenCode,第二个子段是cVenName ,varchar(60)
      

  9.   

    不会吧
    试试:
    CREATE PROCEDURE dbo.GetVenName(@cName varchar(60))
    as
    declare @sql varchar(8000)
    set @sql='select cVenName,cVenCode from Vendor
    where cVenName like ''%'+@cName+''''
    exec(@sql)
    GO
      

  10.   

    create table Vendor
    (
       cVenCode varchar(3),
       cVenName varchar(80)
    )insert into Vendor values('001','沈阳铁合金厂')
    insert into Vendor values('002','海淀百货商场 ')
    insert into Vendor values('003','洛阳轴承厂')
    insert into Vendor values('004','沈阳胜利工厂')drop proc GetVenName
    CREATE PROCEDURE dbo.GetVenName(@cName varchar(60))
    as
    declare @sql varchar(8000)
    set @sql='select cVenName,cVenCode from Vendor
    where cVenName like ''%'+@cName+'%'''
    exec(@sql)
    GOexec GetVenName '胜利'
      

  11.   

    select * from vendor where cVenCode like '%03' 
    可以查到,cVenCode 是varchar(12),怪事
    是不是exec getvenname '胜利'这句话有问题?
      

  12.   

    试试:
    select cVenName,cVenCode from Vendor
    where cVenName lide '%'+@cName+'%'
    必须前后都加上“%”才行的,否则只会检索出以所传参数结尾的记录
      

  13.   

    可以拉
    CREATE PROCEDURE dbo.GetVenName(@cName char(60))
    as
    select cVenName,cVenCode from Vendor
    where cVenName like '%'+rtrime(@cName)+'%'
    GO
    谢谢哈哈拉,
    散分
      

  14.   

    不过我还是觉得奇怪
    昨晚我也试过
    CREATE PROCEDURE dbo.GetVenName(@cName char(60))
    as
    select cVenName,cVenCode from Vendor
    where cVenName like '%'+@cName+'%'
    GO
    因为没有加rtrim(),所以没有成功,
    我穿的参数没有又空格阿,怎么要用rtrim呢?
      

  15.   

    查看tempdb这个库中的表,就会有了!