我再ASP中在修改是要用,插入再读,还需要再用一次"adodb.connection",很麻烦的而且容易出错。
  
 好像在存储过程里,有个ouput可以取出来吧,怎么用呢?

解决方案 »

  1.   

    create procedure  up_test  @var_out char(10) output 
    as
    ......
      select @var_out = id from XX where XXX
    go
     
      

  2.   

    在存儲過程中最後用一條select 語句,將結果選出來 賦給一個結果集就行了
      

  3.   

    看FAQ:
    http://www.csdn.net/Expert/FAQ/FAQ_Index.asp?id=858
      

  4.   

    SELECT  @@IDENTITY  
    或用    
    SELECT  SCOPE_IDENTITY()  
    或用  
    SELECT  IDENT_CURRENT('news')  
     
     
      

  5.   

    还有jameszht(湖泊)说的对,可以有多个结果集,用ADO对象去取。NEXT()
      

  6.   

    Yang_(扬帆破浪) :
      ID列不一定是IDENTITY
      

  7.   

    to:weixy() 
       估计楼主是这个意思吧,要不插入时必须提供ID的值,那样就没有这一问了,因为插入前就知道。
      

  8.   

    Yang_(扬帆破浪) 兄 说的对。
      

  9.   

    weixy()兄:在sql server 7.0 的存储过程里,"output"就不认为是保留字符,编写存储过程时就不通过。
       我是想向商品表中放入新的商品,在浏览者看来在填写完新商品,按下回车键就把现有的商品列表全读出来了(当然也包括刚插入的那个)。
      

  10.   

    weixy()兄:在sql server 7.0 的存储过程里,"output"就不认为是保留字符,编写存储过程时就不通过。
       我是想向商品表中放入新的商品,在浏览者看来在填写完新商品,按下回车键就把现有的商品列表全读出来了(当然也包括刚插入的那个)。
      

  11.   

    那就在存储过程里返回所有值就行了啊。我电脑没装SQLSERVER你查一下帮助,OUTPUT没错。
      

  12.   

    totripofdream(梦之旅) 告诉我一个方法:
      sql="execute sp_insertproduct '" &chrproductname & "','" &txtdescription &"','" &chrproductimage  &"',"&intprice &","&intactive & ";select @@identity as 'id'"
      set rsproduct=dbproduct.execute(sql)
      set rsproduct=rsproduct.nextrecordset
    (sp_insertproduct就是该存储过程)
    但现在还有个问题:插入的chrproductname 等varchar类型的
    字段之插入了第一个字母。
      

  13.   

    CREATE PROCEDURE titles_sum @@TITLE varchar(40) = '%', @@SUM money OUTPUT
    AS
    SELECT 'Title Name' = title
    FROM titles 
    WHERE title LIKE @@TITLE 
    SELECT @@SUM = SUM(price)
    FROM titles
    WHERE title LIKE @@TITLE
    GO接下来,将该 OUTPUT 参数用于控制流语言。 说明  OUTPUT 变量必须在创建表和使用该变量时都进行定义。
    参数名和变量名不一定要匹配,不过数据类型和参数位置必须匹配(除非使用 @@SUM = variable 形式)。 DECLARE @@TOTALCOST money
    EXECUTE titles_sum 'The%', @@TOTALCOST OUTPUT这是我在帮助里考的例子,绝对没错。
    你插入的字段值定义的是什么类型?是不是要进行UNICODE转换。
      

  14.   

    不行呀,我的存储过程如下:   CREATE PROCEDURE sp_insertproduct @chrproductname varchar,
                                      @txtdescription text,
                                      @chrproductimage varchar,
                                      @intprice int,
                                      @intactive int,
                                      @@idproduct int output
                                     
    AS
    insert into products(chrproductname,txtdescription,chrproductimage,intprice,intactive)
    values(@chrproductname,@txtdescription,@chrproductimage,@intprice,@intactive)select @@idproduct=idproduct  from products
    where  chrproductname=@chrproductname,
           txtdescription=@txtdescription,
           chrproductimage=@chrproductimage,
           intprice=@intprice,
           intactive=@intactive
    系统认为where 后面有问题 。另:@@idproduct和idproduct 都是int型
      

  15.   

    这个问题用select @@identity as 'id'解决了。现在的问题是:用存储过程插入时,字符型的数据不能完整的插入到库中。(存储过程如下:)
    CREATE PROCEDURE sp_insertproduct @chrproductname varchar,
                                      @txtdescription text,
                                      @chrproductimage varchar,
                                      @intprice int,
                                      @intactive int
    AS
    insert into products(chrproductname,txtdescription,chrproductimage,intprice,intactive)
    values(@chrproductname,@txtdescription,@chrproductimage,@intprice,@intactive)
    例如:@chrproductname=='shoes',但擦入到表中的却是:'s'
    怎么解决呢?
      

  16.   

    八成是你的欄位寬度不夠。
    查查看products.chrproductname的寬度是多少? 看是不是char(1)?
      

  17.   

    @chrproductname varchar(length)
    @chrproductname varchar 就是varchar(1)了
      

  18.   

    windy_w_2001(霓) 兄sorry,今天不在,
    @@idproduct int output  改为 @idno
    @@变量不能输出。
      

  19.   

    哦,不对,刚才说错了,全局变量我没有试过,我刚才看了你的存储过程,你的where 后面应该是and