ALTER    PROCEDURE dt_select 
(@type_name varchar(50))
 AS
exec('Select  top 10 * From movie where Contains(Genrecn,''%'+@type_name+'''%')

解决方案 »

  1.   

    try:
    --------------------------------------------------------------
    create PROCEDURE dt_select 
    (@type_name varchar(50))
    AS
      Select top 10 * From movie where Contains(Genrecn,'%'+@type_name+'%')
      

  2.   

    Select  top 10 * From movie where Contains  in  (Genrecn,'%@type_name%')
      

  3.   

    ALTER    PROCEDURE dt_select 
    (@type_name varchar(50))
     AS
    Select  top 10 * From movie where Contains(Genrecn,'%'+@type_name+'%')
      

  4.   

    Select  top 10 * From movie where Contains  in  (Genrecn,'%'+@type_name+'%')
      

  5.   

    Contains(Genrecn,'%@type_name%')这样不是把变量值带进去,而是查询匹配字符串 '%@type_name%'
      

  6.   

    谢谢大家,还有个小问题
    我这里是嵌套查询
    就是每查到一个电影,就要从另一个表里把它的演员找出来,我这样写,结果说
    过程 'dt_select' 需要参数 '@titlecn',但未提供该参数。 /movie/xhb123.asp,行 112 我是这样写的
    ALTER    PROCEDURE dt_select 
    (@type_name varchar(50),@titlecn varchar(8000))
     AS
    Select  top 10 * From movie where Genrecn like '%'+@type_name+'%'
    select * from movie where titleall like '%'+@titlecn+'%'
    程序里这样
    do while not rs.eof
    if rs("titlecn")<>"" then
    Set prm1=cmd.CreateParameter("titlecn",200,1,8000,titlecn)
    else
    Set prm1=cmd.CreateParameter("titlecn",200,1,8000,titleen)
    end if
    set rs2=rs.nextrecordset
    rs.movenext
    loop这样写对不对?我想得到第二条查询语句的结果呀.
      

  7.   

    调用代码不全,看不出
    Set prm1=cmd.CreateParameter("titlecn",200,1,8000,titlecn)
    是否会作用于调用的过程
      

  8.   

    --而且你的if else 判断中的两句处理都是一样的,不知道是什么意思--建议存储过程允许不指定某个参数
    ALTER    PROCEDURE dt_select 
    (@type_name varchar(50)='',
    @titlecn varchar(8000)='')
     AS
    Select  top 10 * From movie where Genrecn like '%'+@type_name+'%'
    select * from movie where titleall like '%'+@titlecn+'%'