ALTER PROCEDURE dbo.GetTopNews 

(
@NewsKindId int,
@IntTop int
)

AS
declare @sql varchar(200)
set @sql='select top '+cast(@IntTop as varchar)+' * from News where NewsKindId='+cast(@NewsKindId as varchar) 
ExEC (@sql)
RETURN通过这个获得了 数据库的前面的数据 请问该如何 获得最后更新的资料 是 'select down' 吗?

解决方案 »

  1.   

    ALTER PROCEDURE dbo.GetTopNews  ( 
    @NewsKindId int, 
    @IntTop int 
    ) AS 
    declare @sql varchar(200) 
    set @sql='select top '+cast(@IntTop as varchar)+' * from News where NewsKindId='+cast(@NewsKindId as varchar)+'order by NewsId desc'
    ExEC (@sql) 
    RETURN 可以这么写吗?
      

  2.   

    对,通过反向排序来获取最后的记录。
    SQL SERVER 没有 select  down
    if 是 2005 可以用 rownumber
      

  3.   

    SQL SERVER 2000没有听说过 select  down
    2005 可以用 rownumber
      

  4.   

    rownumber 如何用?请给个示例吧
      

  5.   

    看你怎么定义这个"最后加进数据库的资料"
    如果有日期字段,按照日期倒排序,然后select top
      

  6.   

    我也有同样的问题,在浪曦在线<新闻发布系统>里,首页的新闻条目不是按时间降序显示的,
    也就是从后台最新录入的新闻不能在第一条位置显示。具体问题如下:
    首页Default.aspx的代码:
    <tr>
       <td align="left"><%  Response.Write(BindTopNews(1,6));%>
       </td>
    </tr>
    首页Default.aspx.cs的代码:
     public string BindTopNews(int NewsKind, int intTop)
        {
            StringBuilder strNews = new StringBuilder();
            List<News> AllNews = new List<News>();
            AllNews = News.GetTopNews(NewsKind, intTop);
            foreach (News SingleNews in AllNews)
            {
                strNews.Append("<FONT color=#c5180a>·</FONT>");
                strNews.Append("<a href='NewsShow.aspx?id=");
                strNews.Append(SingleNews.NewsId);
                strNews.Append("' target='_blank'>");
                strNews.Append(Strings.CutString(SingleNews.NewsTitle, 32));//截取新闻标题长度,超出部分用省略号代替
                strNews.Append("</a>&nbsp;");
                strNews.Append(SingleNews.PubDate.ToString("[MM-dd]"));
                strNews.Append("<br />");
                strNews.Append("<br />");
            }
            return strNews.ToString();
        }
    类News.cs的代码:
      public static List<News> GetTopNews(int NewsKindId, int IntTop)
        {
            List<News> AllNews = new List<News>();
            string procname = "dbo.GetTopNews";
            SqlParameter[] prams ={ new SqlParameter("@NewsKindId", SqlDbType.Int),
                                    new SqlParameter("@IntTop", SqlDbType.Int)};
            prams[0].Value = NewsKindId;
            prams[1].Value = IntTop;
            SqlDataReader Dr = DataBase.RunProcGetReader(procname,prams);
            while (Dr.Read())
            {
                AllNews.Add(new News(Dr));        }
            Dr.Close();
            return AllNews;
        }
    存储过程GetTopNews的代码:
    ALTER PROCEDURE dbo.GetTopNews 
    (
    @NewsKindId int,
    @IntTop int
    )
    AS
    declare @sql varchar(200)
    set @sql='select top '+cast(@IntTop as varchar)+' * from News where NewsKindId='+cast(@NewsKindId as varchar)
    RETURN
    我将存储过程改写为:set @sql='select top '+cast(@IntTop as varchar)+' * from News where NewsKindId='+cast(@NewsKindId as varchar)+'order by NewsId desc' 
    程序运行出错。
    盼望高手指点,不甚感激!