TRY:CREATE PROCEDURE [dbo].[myproc]
@usrname varchar(13)=''
ASif  @usrname <> ''
     select * from controller where name=@usrname
else    
     select * from controller
GO...
sql="EXECUTE myproc '"& name &"'"

解决方案 »

  1.   

    CREATE PROCEDURE [dbo].[myproc]
    @usrname varchar(13)
    AS
    if  IsNull(@usrname,'') <> ''
    begin
         select * from controller where name=@usrname
    end
    else    
    begin
         select * from controller
    end
    GO
      

  2.   

    检查@usrname 的值是否为空(null) 如果为null ,就会出现上述错误。
      

  3.   

    CREATE PROCEDURE [dbo].[myproc]
    @usrname varchar(13)
    AS
    if  IsNull(@usrname,'') <> ''
    begin
         select * from controller where name=@usrname
    end
    else    
    begin
         select * from controller
    end
    GO
      

  4.   

    CREATE PROCEDURE [dbo].[myproc]
    @usrname varchar(13)
    AS
    if  @usrname <> '' and @usrname is not null 
    begin
         select * from controller where name=@usrname
    end
    else    
    begin
         select * from controller
    end
    GO
      

  5.   

    set rs=conn.execute("myproc '"&参数1&",'"&参数2&"...'")
      

  6.   

    --试试改为:
    CREATE PROCEDURE [dbo].[myproc]
    @usrname varchar(13)
    AS
    set nocount on
    if  isnull(@usrname,'') <> ''
    select * from controller where name=@usrname
    else    
    select * from controller
    set nocount off
    GO
      

  7.   

    不用过程呢?select * from controller where name=isnull('你的参数',name)
      

  8.   

    Try:
    CREATE PROCEDURE [dbo].[myproc]
    @usrname varchar(13)
    AS
    SET NOCOUNT ON
    if  IsNull(@usrname,'') <> ''
    begin
         select * from controller where name=@usrname
    end
    else    
    begin
         select * from controller
    end
    GO
      

  9.   

    大力的经典!邹建的不错CREATE PROCEDURE [dbo].[myproc]
    @usrname varchar(13)=''
    AS
    set nocount on
    if  isnull(@usrname,'') <> ''
    select * from controller where name=@usrname
    else    
    select * from controller
    set nocount off
    GO
      

  10.   

    to 楼上的
    这样做没错了,但是和我的程序有冲突,看看:
    sql = "EXECUTE myproc '"&usrname&"'"
    set conn = server.CreateObject("ADODB.connection")
    conn.open "fq","admin","admin"
    set rs = server.CreateObject("ADODB.recordset")
    rs.open sql,conn,1,2
    rs.pagesize = 20 
    if not rs.eof then  
    total = cstr(rs.pagecount)
    if(request.Form("ok") = "确定") then
    currentpage = clng(request("txtCurrentpage"))
    elseif ( currentpage="" ) then
    currentpage = clng(request("page"))
    end if
    '处理非法页码问题
    if currentpage<1 then currentpage=1 end if 
             if currentpage>rs.pagecount then currentpage=rs.pagecount  end if
             rs.AbsolutePage = currentpage //就是这里出错,提示:参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。
    如果我把这一句注释掉,可以执行,但是不能翻页,这不是我想要的结果。请问该怎么解决呢?
      

  11.   

    '这个不是存储过程错了,而是你的调用方法错了.
    sql = "EXECUTE myproc '"&usrname&"'"
    set conn = server.CreateObject("ADODB.connection")
    conn.open "fq","admin","admin"
    set rs = server.CreateObject("ADODB.recordset")'加上这句就行了.
    rs.CursorLocation = adUseClient
    rs.open sql,conn,1,2
    rs.pagesize = 20 
    if not rs.eof then  
    total = cstr(rs.pagecount)
    if(request.Form("ok") = "确定") then
    currentpage = clng(request("txtCurrentpage"))
    elseif ( currentpage="" ) then
    currentpage = clng(request("page"))
    end if
    '处理非法页码问题
    if currentpage<1 then currentpage=1 end if 
             if currentpage>rs.pagecount then currentpage=rs.pagecount  end if
             rs.AbsolutePage = currentpage
      

  12.   

    to zjcxc(邹建)还是不行,同样的错误,但是指向了rs.CursorLocation = adUseClient
    郁闷啊,我已经搞了一整天了!!
      

  13.   

    '改为这个,一时不醒起,asp中好像不支持常量:rs.CursorLocation = 3
      

  14.   

    哦,可以了,太感谢了,但rs.CursorLocation = 3 这个语句表示什么呢?马上结贴
      

  15.   

    表示设置或返回游标服务的位置。设置和返回值设置或返回可设置为以下某个常量的长整型值。常量 说明 
    adUseNone 没有使用游标服务。(该常量已过时并且只为了向后兼容才出现)。 
    adUseClient 使用由本地游标库提供的客户端游标。本地游标服务通常允许使用的许多功能可能是驱动程序提供的游标无法使用的,因此使用该设置对于那些将要启用的功能是有好处的。AdUseClient 具有向后兼容性,也支持同义的 adUseClientBatch。 
    adUseServer 默认值。使用数据提供者的或驱动程序提供的游标。这些游标有时非常灵活,对于其他用户对数据源所作的更改具有额外的敏感性。但是,Microsoft Client Cursor Provider(如已断开关联的记录集)的某些功能无法由服务器端游标模拟,通过该设置将无法使用这些功能。