情景描述:
项目中有个地方需要向数据库中插入几条数据,由此引发的一系列问题~
项目要求:
1、使用存储过程
2、代码和数据库相关业务分离
以下为几种方案:
1、最初的方案是存储过程中插入一条数据,代码中循环调用存储过程进行插入(被PASS,原因是多次调用影响效率)
2、代码中拼接成一条SQL语句,然后传给存储过程,执行一次操作即可(被PASS,要实现业务分离)
3、通过文件批量插入(暂不考虑,因为数据量不大,又考虑文件上传等因素,有点大材小用)
4、确定方案:其实根据两个要求就能确定,只能把数据一次性发给存储过程,然后进行插入。所以需要现在代码中对数据进行拼接,组合成字符串当做参数传给存储过程,然后存储过程反解析,最后进行插入(游标、事务、循环等)
代码中最后传出的字符串格式为:
"1,101,2.35;1,102,2;1,103,3.50"
即1,101,2.35为一组,每一组用;分割,每个组之间用,分割
所以需要在存储过程中进行字符串分割
1、初始方案,直接拆分
DECLARE @arr VARCHAR(128)
DECLARE @Tlist1 VARCHAR(64)
DECLARE @posStart INT
DECLARE @posCur INT
DECLARE @TID INT
SET @posStart = 1
SET