有如下字段:
PlantID  自动递增 int
Plant_name varchar
plt_picurl  varchar用insert新添一条记录,使plt_picurl的值等于当前记录的PlantID的值同时如果我用存储写,我同时想在执行此语句后返回Plant_ID,这个存储该怎么写

解决方案 »

  1.   

    declare @id [int]
    insert into tableA(plant_name) values(value)
    set @id = @@identity
    update tableA set plt_picurl = @id where plantID = @id
      

  2.   

    还是用了两句,看来一个SQL语句是做不成的。
      

  3.   

    '提交之前没有着个ID值啊,只有提交以后才会生成这个ID,所以要分两次进行
    '这样的话~你还要哪个字段拿来做什么~~要用的时候直接读ID就是了啊!
    '你实在迫切需要这个字段的话!先用用前面着段~把已有的记录赋值,再在提交新记录时候加第二段
    '全部付值
    dim rs,sql,Conn,connstr,db
    db="******.mdb"      '数据库文件的位置
    Set conn = Server.CreateObject("ADODB.Connection")
    connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(db)
    conn.Open connstr
    conn.execute("update 数据库名 set plt_picurl=PlantID where plt_picurl=''")
    conn.close
    set conn=nothing      '提交新记录的时候
    set mrs=conn.execute("select max(plt_picurl) from 数据库")
    plt_picurl=mrs(0)
    rs("plt_picurl")=Maxplt_picurl+1
    rs.update
    rs.close
    response.write plt_picurl
      

  4.   

    还是levee(螵蛸) 提醒了我,我那个字段的确是多余的,用到的时候只要读ID值就可以了
    我的存储如下,现在的问题是如何返回这个plant_ID值,我的这个存储该怎么改,并在CS中获得这个值(C#)。
    由于添加的字段太多,所以我就这样传参数而不是对每一个字段设参数,这样的思路对吗?CREATE PROCEDURE add_one  @tablename varchar(50),@fieldstr varchar(200),@valuestr varchar(200) AS
    declare @sql varchar(1024)
    set @sql='insert into  '+@tablename+' ('+@fieldstr +')  values('+@valuestr+')'
    exec(@sql)
      

  5.   

    我不懂.net呀~~才在学~我看你的语句和看乱码没有分别
    不过我觉得你思路不对~~
    为什么要写plant_ID呢~~~你提交的是什么就返回什么
    如果不加新字段的话,就自己读plant_ID中最大的~~再+1就是刚才哪个了
    ASP是这样~
    set mrs=conn.execute("select max(plt_picurl) from 数据库")
    plt_picurl=mrs(0)
    rs("plt_picurl")=Maxplt_picurl+1
    response.write plt_picurl
    就这个思路吧~~ASP.Net不知道怎样写~~~~
      

  6.   

    我记得在存储里可以获得insert语句之后的ID值(只插入一条记录时)的啊
      

  7.   

    就ID不行啊~~ID是生成的啊~其他的就直接WriteLine出来了,
    因为提交是带值的,你自己把带过去的值写出来就可以了~~但是没有ID啊~
    所以提交前要读plant_ID中最大的~~再+1
    提交以后查询就不加了,返回的就是刚才插入记录的ID了啊
      

  8.   

    知道了,这样写就好了:
    CREATE PROCEDURE add_one @tablename varchar(50),@fieldstr varchar(200),@valuestr varchar(200),@id int output  AS
    declare @sql varchar(1024)
    set @sql='insert into  '+@tablename+' ('+@fieldstr +')  values('+@valuestr+')'
    exec(@sql)
    set @id= @@IDENTITY
    GO