CREATE PROCEDURE  lyg_getArticleClass
as
select * from tba
select * from tbb
select * from tbc
select * from tbd怎么才能只返回
select * from tbd
的结果

解决方案 »

  1.   

    CREATE PROCEDURE  lyg_getArticleClass
    as
    set nocount on
    select * from tba
    select * from tbb
    select * from tbc
    set nocount off
    select * from tbd
    go
      

  2.   

    CREATE PROCEDURE  lyg_getArticleClass
    @pid int=0
     AS
    declare @tmp1 table (TC_Id int,TC_PID int,TC_Name varchar(200),lev int,idpath varchar(6000))
    declare @lev int
    set @lev=1
    insert @tmp1 select id,pid,name,1,cast(id as varchar(6000)) from article_classes where pid=0
    while @@rowcount>0
    begin
      set @lev=@lev+1
      insert @tmp1 select a.id  ,a.pid,a.name,@lev,idpath+','+cast(a.id as varchar(6000)) from  article_classes a,@tmp1 b where a.pid=b.tc_ID and a.ID not in (select tc_ID from @tmp1) order by paixuid
    end
    select * from @tmp1 order by idpath
    GOasp中调用的时候怎么没返回结果呢?
    set rs=conn.execute ("execute lyg_getArticleClass 0")
    do while not rs.eof//执行这里的时候错误
    提示
    “对象关闭时不允许操作”
      

  3.   

    这和SQL没关系,应该是你ASP调用有问题
      

  4.   

    ASP没问题,我试过了,把上面的存储过程直接改为:
    CREATE PROCEDURE  lyg_getArticleClass
    @pid int=0
     AS
    select * from article_tree order by idpath
    GO
    在ASP中执行就没有问题
      

  5.   

    set Rs=conn.execute ("execute lyg_getArticleClass 0")'取第一个记录集
    set Rs=Rs.NextRecordset '取第二个记录集
    set Rs=Rs.NextRecordset '取第三个记录集
    set Rs=Rs.NextRecordset '取第四个记录集
      

  6.   

    --改改ASP试试
    set rs=conn.execute ("execute lyg_getArticleClass 0")
    do while not rs.eof//执行这里的时候错误--------------------------------------------------
    dim oComm,oPara
    Set oComm = Server.CreateObject("ADODB.Command")
    oComm.ActiveConnection = conn
    oComm.CommandText      = "lyg_getArticleClass"
    oComm.CommandType      = 4
    oComm.Prepared         = trueSet oPara = oComm.CreateParameter("pid",3,1)
    oComm.Parameters.Append oPara
    oComm(0)=0
    set rs=oComm.Execute
    set oPara=nothing
    Set oComm = Nothingdo while not rs.eof
    ...
    ...
    ...
      

  7.   

    我想应该是你的两个存储过程中前一个在过程中用到了参数,后一个只是声明了没有用到参数,所以测试的结果不能说明你的ASP没问题
      

  8.   

    set rs=conn.execute ("lyg_getArticleClass")
    set rs=rs.nextrecordset
    set rs=rs.nextrecordset
    set rs=rs.nextrecordset
    set rs=rs.nextrecordset
    set rs=rs.nextrecordset晕,我写了5个nextrecordset才可以了。什么原因有没有好的办法直接返回记录集,不用这么多nextrecordset
      

  9.   

    难道就没有一个语句可以把前面的结果清除掉只返回最后一个SELECT的结果吗?
      

  10.   

    最主要一句是set nocount on
    把不需要返回的查询结果不显示
      

  11.   

    既然前面几个select的结果集都没用的上的话,那你还不如把你的存储过程改为
    create procedure pro
    as
    begin 
    select * from tbd
    end
    算了,