CREATE PROCEDURE NewsAdd
@Title NVarChar (100),
@SubTitle NVarChar (100),
@NewsID Int OUTPUT
AS
insert news(Title,SubTitle) 
values(@Title,@SubTitle)
         select @NewsID=@@IDENTITY
GO

解决方案 »

  1.   

    DECLARE @I INT
    EXEC NewsAdd 'DDD','KKK',@I OUTPUT
    SELECT @I这样就可以了
      

  2.   

    Yang_(扬帆破浪):按你的方法成功了.谢谢.
    再多问一句就给分:
    目前我这个表NewsID是设为主键的.
    如果它不是主键,那select @NewsID=@@IDENTITY是不是就无效了呢?
    如果是,那应该换成什么方法来返回@NewsID呢?
      

  3.   

    如果不是:哈哈,假设是非空字段,插入错误!如果是可以为空,那值就是Null
      

  4.   

    newly_ignorant(不学无术):呵呵,明白了,我有够傻.结帐.
      

  5.   

    不对不对,胡涂了.
    我的意思是,假如NewsID是自动编号的,但它不是主键,用select  @NewsID=@@IDENTITY还行吗?
    主要是想问这个@@IDENTITY是什么意思.
    呵呵.
      

  6.   

    @@IDENTITY是返回最后一个自增字段的值!!
      

  7.   

    to:htouch(回家) 
      如果不是主键,有时会产生重复的ID,这个原因我也不知道,可能微软也解释不清楚。
      如果不是主键,select @NewsID=@@IDENTITY也是有效的。
      一般自增长字段设成主键或者唯一索引是好办法,保证数据的唯一性。