求解在2个表需要insert 的一个存储过程?

trycome 2008-12-22 11:29:30
投票系统:
有2个表
Tablet votesubject:
datetime timestamp
showing datetime
content tinytext utf8 utf8_unicode_ci
title varchar 50 标题 0 标题 utf8 utf8_unicode_ci
id int 11

table votelabel:
num int 11 票数
label varchar 50 选型
subjectid int 11 主题ID
id int 11

存储过程 首先要 insert into votesubject(title,content,datetime)value(?,?);然后在这条新记录里由 id 在votelabel表里插入n条记录 subjectid =id, 所有插入的数据都是在通一个JSP页面(动态的表单 因为不能确定有几条选型 votelabel-- 插入n条记录 )提交到servlet,在servlet里调用这个存储过程。

这个可以用单个SQL语句,不同JSP页面先后插入来实现 只是我想学习一下存储过程 以前从没用过 希望大家多指教, 给个思路也好 最好能把这个存储过程大略的解释一下。
...全文
151 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
trycome 2008-12-22
  • 打赏
  • 举报
回复
这个步骤应该是先insert一条Tablet votesubject记录,然后有这个新的ID (这个ID是MYSQL自动加一生成的),前面同一个JSP页面提交有一个数组label[n],由这个数组来insert n 条table voteLabel记录,其中subjectID = ID(votesubject 新的ID )。
trycome 2008-12-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wwwwb 的回复:]
现在问题是什么?取得最新ID?
[/Quote]

不是
我希望能写一个整个的存储过程给我,呵呵, 最好能在解释一下关键点 ,我刚在看MYSQL5.0的API ,但以前没写过存储过程,现在无从下手。

MYSQL5.0的API 很简单的例子,没有什么启发。请多帮忙

wwwwb 2008-12-22
  • 打赏
  • 举报
回复
现在问题是什么?取得最新ID?
WWWWA 2008-12-22
  • 打赏
  • 举报
回复
select MAX(id) from votesubject 这个能得到最新生成的 Tablet id (id 是incerement 主键)吗?
还有LAST_INSERT_ID()在SQL语句中怎么使用?

网络上用LAST_INSERT_ID(),单机可以用MAX(ID)
插入执行完后,
select LAST_INSERT_ID() into @rr from table
seleect @rr
既可得到
trycome 2008-12-22
  • 打赏
  • 举报
回复
没人赐教 不用存储过程了
请问
select MAX(id) from votesubject 这个能得到最新生成的 Tablet id (id 是incerement 主键)吗?
还有LAST_INSERT_ID()在SQL语句中怎么使用?
trycome 2008-12-22
  • 打赏
  • 举报
回复
这个数组怎么作为参数传进去:
在语言中循环,将每个数组内容传进去

那么是要分成2个存储过程写, 第一个insert votesubject; 第二个 取 LAST_INSERT_ID() n labelname, insert 到votelabel 我要在语言中循环第二个存储过程吗 ?
能帮我完整的些一下吗 ?

WWWWA 2008-12-22
  • 打赏
  • 举报
回复
这个数组怎么作为参数传进去:
在语言中循环,将每个数组内容传进去

还有我不知道声明形参里的 in out inout 具体怎么用
IN 变量名 类型

你的SP有语法问题
trycome 2008-12-22
  • 打赏
  • 举报
回复
drop procedure if exists addvoteProc;
create procedure addvoteProce(in title varchar,content tinytext ,datetime1 datetime,n int)
begin
insert into votesubject (title,content,datetime) values
(title,content,datetime1) ;
declare maxid int;
select max(id) into subjectid from votesubject;
subjectid = LAST_INSERT_ID();
declare i int;
for( i =0;i<n;i++){
insert into votelabel(label) values(数组[i]) ;
}
end
这个刚写的 这个数组怎么作为参数传进去 选项名称 Sting[] ,
还有我不知道声明形参里的 in out inout 具体怎么用
WWWWA 2008-12-22
  • 打赏
  • 举报
回复
前面同一个JSP页面提交有一个数组label[n],由这个数组来insert n 条table voteLabel记录,其中subjectID = ID(votesubject 新的ID )。
将N做为参数传递给存储过程,用循环来插入记录
WWWWA 2008-12-22
  • 打赏
  • 举报
回复
插入后取得自增字段ID最新值?用
LAST_INSERT_ID()取得。
你现在做到哪一步了?

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧