create procedure p
@news_types varchar(8000) --新闻类别,逗号分割
asselect id
       ,title
       ,stime 
from news 
where charindex(','+convert(varchar,news_type)+',',','+@news_types+',')>0 
order by id desc

解决方案 »

  1.   

    请问 vivianfdlpw() ,你建的这个存储过程名称是p,那在页面上要怎么调用呢?
    是这样吗?
    如果我要读第一类的新闻:
    rs.open "P '1'",1
    是这样吗?
      

  2.   

    create procedure P_News
    @news_types varchar(8000) --新闻类别,逗号分割
    asselect id
           ,title
           ,stime 
    from news 
    where charindex(','+convert(varchar,news_type)+',',','+@news_types+',')>0 
    order by id desc调用:
    rs.open "P_NEWS '"&news_type&"'",conn,1,1
      

  3.   

    不可以用啊~~~,我的news_types是int型,不是varchar啊~~~~
    提示where charindex   之类有问题 啊
      

  4.   

    调用:
    rs.open "P_NEWS '"&cstr(news_type)&"'",conn,1,1
      

  5.   

    @news_types定义为varchar,要不怎么传递1,2,3?
      

  6.   

    没有用哦,我的qq是107625796,加我,或者告诉我你qq好吗?
      

  7.   

    我的意思这样的,因为我的页面要读好多新闻,比较慢,所以我想写存储过程,然后都起来就方便些哦,
    如果我想读第一类的新闻,就这样:
    rs.open "P_NEWS '1'",conn,1,1
    如果我想读第二类的新闻,就这样:
    rs.open "P_NEWS '2'",conn,1,1
    .....
    就是这样的哦,那应该怎么写啊,麻烦您了哦
      

  8.   

    create procedure P_News
    @news_type int,     --新闻类别
    @area varchar(20)   --区域
    asif @area=''
       set @area=nullselect id
           ,title
           ,stime 
    from news 
    where news_type=@news_type
          and
          area=isnull(@area,area)
    order by id descgo
    调用:
    rs.open "P_NEWS 1,'"&session("area")&"'",conn,1,1 
    rs.open "P_NEWS 2,'"&session("area")&"'",conn,1,1 
      

  9.   

    谢谢您~~对立,如果要是加上控制显示的条数,要怎么写呢》?
    比如
    调用:
    rs.open "P_NEWS 1,'"&session("area")&"','条数'",conn,1,1 
      

  10.   

    create procedure P_News
    @news_type int,     --新闻类别
    @area varchar(20),  --区域
    @rows int           --显示条数
    asif @area=''
       set @area=null
    if @rows is null
       set @rows=0set rowcount @rows
    select id
           ,title
           ,stime 
    from news 
    where news_type=@news_type
          and
          area=isnull(@area,area)
    order by id descset rowcount 0
    go
    调用:
    rs.open "P_NEWS 1,'"&session("area")&"',10",conn,1,1  --前10条
    rs.open "P_NEWS 2,'"&session("area")&"',20",conn,1,1  --前20条
    rs.open "P_NEWS 1,'"&session("area")&"',0",conn,1,1   --所有记录