CREATE PROC searchdoctor @dep varchar(30)='无',@name varchar(20)=''
as

解决方案 »

  1.   

    你试试这样写吧:
    CREATE PROC searchdoctor @dep varchar(30)='',@name varchar(20)=''
    as
    begin  
     set @dep=rtrim(@dep)
     declare @sql varchar(8000)
     declare @lname int
     set @lname=len(RTRIM(@name))
     if @lname>0 SELECT @name = '%'+@name+'%'
     
     set @sql='select * from doctorinfo'
     
     if @dep<>'无'
     begin  
      set @sql=@sql+' where department='+''''+@dep+''''
      if @lname>0 set @sql=@sql+' and name like '+''''+@name+ ''''
     end
     else
      if @lname>0 set @sql=@sql+' where name like '+''''+@name+ ''''
     exec(@sql)
    end
    GO
      

  2.   

    我在查询分析器中测试的结果是对的,可是我在ASP中调用出现了以下问题:
    调用语句:
     dim dep,name
     dep=request.form("department")
     name=request.form("doctorkey")
     set rs = server.createobject("adodb.recordset") 
     rs.Open "Exec searchdoctor "&dep&","&name,conn,1,1
    说明:
     数据库连接过程用<!--#include file="dbconnect.asp"--> 包含到该文件中
    问题:
    1、当name为空或dep为“无”时,数据库服务器响应缓慢导致最后整个机器反应迟钝,要重启。
    2、我将rs.Open "Exec searchdoctor "&dep&","&name,conn,1,1改成
      if name<>"" then
      rs.Open "Exec searchdoctor "&dep&","&name,conn,1,1
     else
      rs.open "Exec searchdoctor "&dep&",''",conn,1,1
     end if
    好像没有解决上述问题,请各位帮我看看,我昨天已经问过类似问题,至今尚未解决,真得很急,谢了!
      

  3.   

    没写怎么调用
    如果按我的改了,可以:exec searchdoctor
    or
    exec searchdoctor 'A'
    or
    exec searchdoctor 'A','张'
    or
    exec searchdoctor ,@name ='张'
      

  4.   

    http://expert.csdn.net/Expert/topic/2977/2977156.xml?temp=.4849512
    http://expert.csdn.net/Expert/topic/2976/2976498.xml?temp=.3818628
    http://expert.csdn.net/Expert/topic/2974/2974600.xml?temp=.3015406
    http://expert.csdn.net/Expert/topic/2971/2971591.xml?temp=.5768701
    这都是我这几天问的和存储过程相关的问题,大家帮我看看,分不是问题,问题是我想弄明白这块,谢了,帮帮我!
      

  5.   

    rs.Open "Exec searchdoctor '"&dep&"','"&name & "'",conn,1,1