CREATE DEFINER=`root`@`` PROCEDURE `TeamMember_InsertMembers`(
_TeamId INT,
_EmployeeIds VARCHAR(250)
)
BEGIN
set @RowCount=0;
set @SqlStr = 'SELECT length(replace(_EmployeeIds,",","")) INTO @RowCount';
PREPARE StmtTotalCount FROM @SqlStr;
EXECUTE StmtTotalCount;
DEALLOCATE PREPARE StmtTotalCount;
set @End = 1;
set @EmployeeId = 0;
while (@End < @RowCount+1) do
IF @End = 1 then
set @SqlStr = 'select SUBSTRING_INDEX(_EmployeeIds,",",@End) INTO @EmployeeId';
PREPARE StmtTotalCount FROM @SqlStr;
EXECUTE StmtTotalCount;
DEALLOCATE PREPARE StmtTotalCount;
INSERT INTO TeamMember
(
TeamId,
EmployeeId
)
VALUES
(
_TeamId,
@EmployeeId
);
else
set @SqlStr = 'select SUBSTRING_INDEX(SUBSTRING_INDEX(_EmployeeIds,",",@End),",",-1) INTO @EmployeeId';
PREPARE StmtTotalCount FROM @SqlStr;
EXECUTE StmtTotalCount;
DEALLOCATE PREPARE StmtTotalCount;
INSERT INTO TeamMember
(
TeamId,
EmployeeId
)
VALUES
(
_TeamId,
@EmployeeId
);
END IF;
set @End = @End + 1;
end while;
END$$请问下这个存储过程执行失败,是哪里错了 应该怎么改??
_TeamId INT,
_EmployeeIds VARCHAR(250)
)
BEGIN
set @RowCount=0;
set @SqlStr = 'SELECT length(replace(_EmployeeIds,",","")) INTO @RowCount';
PREPARE StmtTotalCount FROM @SqlStr;
EXECUTE StmtTotalCount;
DEALLOCATE PREPARE StmtTotalCount;
set @End = 1;
set @EmployeeId = 0;
while (@End < @RowCount+1) do
IF @End = 1 then
set @SqlStr = 'select SUBSTRING_INDEX(_EmployeeIds,",",@End) INTO @EmployeeId';
PREPARE StmtTotalCount FROM @SqlStr;
EXECUTE StmtTotalCount;
DEALLOCATE PREPARE StmtTotalCount;
INSERT INTO TeamMember
(
TeamId,
EmployeeId
)
VALUES
(
_TeamId,
@EmployeeId
);
else
set @SqlStr = 'select SUBSTRING_INDEX(SUBSTRING_INDEX(_EmployeeIds,",",@End),",",-1) INTO @EmployeeId';
PREPARE StmtTotalCount FROM @SqlStr;
EXECUTE StmtTotalCount;
DEALLOCATE PREPARE StmtTotalCount;
INSERT INTO TeamMember
(
TeamId,
EmployeeId
)
VALUES
(
_TeamId,
@EmployeeId
);
END IF;
set @End = @End + 1;
end while;
END$$请问下这个存储过程执行失败,是哪里错了 应该怎么改??
解决方案 »
- 谁能把我这两个mysql语句合并一下啊。
- 如何把记录中含有&..&中的文本提取并用逗号分隔返回呢?
- 求最好的linux+mysql视频教程,万分感谢~~!
- Win2003下使用EMS SQL Manager出现问题 HELP!
- 刚学mysql..遇到一问题``100求救了
- 编译安装mysql
- 急,高手,我用phpmyadmin连接数据库,以前连接都没有问题,现在报: “Got error 28 from table handler”,什么原因
- mysql查询数据库中所有数据及生成缓存
- 如何从一个随机的位置连续取出n条记录
- 关于ORZDBA 工具里面的 TPS QPS 流量 解读
- .net 访问Mysql数据库的问题
- 关于存储过程的输出参数类型的问题
biao(b_id,c_id) 2个都是主键 都不能为空 想用这个存储过程来循环插入多条记录。。
例如传入(1,'1,2,3,4,5,10')
他就可以做到
insert biao(b_id,c_id)values(1,'1'),
insert biao(b_id,c_id)values(1,'2'),
......
PREPARE StmtTotalCount FROM @SqlStr;
EXECUTE StmtTotalCount;
DEALLOCATE PREPARE StmtTotalCount;
->set @RowCount = (SELECT length(replace(_EmployeeIds,',',''))) ;
你可以参考这个贴子中解决方法。
http://topic.csdn.net/u/20100921/11/f649d359-1fca-49ca-97f7-27231fb9c427.html
我发现传入的值_EmployeeIds 在循环里无法访问,要用ACMAIN_CHM的方法或者另一个方法。
我是set @EmployeeIds=_EmployeeIds,这样就没问题了 循环里使用@EmployeeIds来执行
set @SqlStr = 'select SUBSTRING_INDEX(_EmployeeIds,",",?) INTO ?';
PREPARE StmtTotalCount FROM @SqlStr;
EXECUTE StmtTotalCount using @end,@EmployeeId;