有如下字段:
PlantID 自动递增 int
Plant_name varchar
plt_picurl varchar用insert新添一条记录,使plt_picurl的值等于当前记录的PlantID的值同时如果我用存储写,我同时想在执行此语句后返回Plant_ID,这个存储该怎么写
PlantID 自动递增 int
Plant_name varchar
plt_picurl varchar用insert新添一条记录,使plt_picurl的值等于当前记录的PlantID的值同时如果我用存储写,我同时想在执行此语句后返回Plant_ID,这个存储该怎么写
insert into tableA(plant_name) values(value)
set @id = @@identity
update tableA set plt_picurl = @id where plantID = @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
我的存储如下,现在的问题是如何返回这个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)
不过我觉得你思路不对~~
为什么要写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不知道怎样写~~~~
因为提交是带值的,你自己把带过去的值写出来就可以了~~但是没有ID啊~
所以提交前要读plant_ID中最大的~~再+1
提交以后查询就不加了,返回的就是刚才插入记录的ID了啊
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