存储过程问题

fangshaoshen 2012-02-27 03:42:57
我写一个用charindex 和 substring 合成的数据库数组方法 用来循环插入数据
以下是我写的存储过程
我使用下面方法调用这个存储过程
exec proceaccresscard_add 'CardCode','MSG',4,'1'
根据数据库数据的改变 可以确定
insert into accresscardinfor (acicode,acimsg) values(@acicode,@acimsg)

insert into mappingacc (ciid,aciid) values(@ciid,@aciid)
是执行了

但是
insert into mappingacd (deviceid,aciid) values(@deviceid,@aciid) --映射卡与设备的关系
没有执行,不知道为什么会这样? 如果有错误的话 事务应该是回滚的吧?

请教各位高手




if exists (select 1
from sysobjects
where id = object_id('proceaccresscard_add')
and type in ('P','PC'))
drop procedure proceaccresscard_add
go


create procedure proceaccresscard_add
@acicode varchar(20),
@acimsg varchar(200),
@ciid int,
@strdeviceid varchar(500) --‘1,2,3,4,5。。。。。’
as
declare
@aciid int,
@error int,
@devicestart int, --总长度
@deviceindex int, --当前索引
@deviceid int
begin
set @error=0
begin tran --声明事务
insert into accresscardinfor (acicode,acimsg) values(@acicode,@acimsg)
set @error=@error+@@error
set @aciid=@@identity
if @aciid>0 and @ciid>0
begin --映射设备与社区(room)的关系
insert into mappingacc (ciid,aciid) values(@ciid,@aciid)
set @error=@error+@@error
if @@rowcount>0 and @deviceid >0--mappingacc 添加成功
begin --映射设备与卡的关系
set @deviceindex=1
set @devicestart=0
while (@deviceindex<len(@strdeviceid))
begin
set @devicestart= charindex(',',@strdeviceid,@deviceindex) --得到起始位置
if @devicestart<1 --无效起始位置
begin
set @error = @error+1
end
set @deviceid = cast(substring(@strdeviceid,@deviceindex,@devicestart-@deviceindex) as int) --得到设备id
set @deviceindex=@devicestart+1 --索引+1 到下一个起始位置
if @deviceid<1 --无效设备id
begin
set @error = @error+1
end
insert into mappingacd (deviceid,aciid) values(@deviceid,@aciid) --映射卡与设备的关系
set @error=@error+@@error
end
end
end
if @error=0
begin
commit tran
end
else
begin
rollback tran
end
end
go

...全文
86 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
fangshaoshen 2012-02-27
  • 打赏
  • 举报
回复
我想 执行这个存储过程
exec proceaccresscard_add 'CardCode','MSG',4,'1'
和 exec proceaccresscard_add 'CardCode','MSG',4,'1,2,3,4,5,6'
都没有问题
慧龙照片恢复软件是一个特殊的数据恢复工具,专门用于恢复误删除、格式化、文件系统错误、分区打不开等造成的照片文件丢失;支持硬盘、光盘、U盘、MP3、数码相机、手机、存储卡等存储介质。支持FAT、FAT32、NTFS、CDFS等各种分区格式,但不能恢复在NTFS分区中压缩存储的文件,也不能恢复加密的文件。全盘扫描查找照片数据,不放过任何一个可恢复的照片文件。   慧龙照片恢复软件在恢复文件过程中不会往源分区写入数据,因此可保证不会对源数据造成再次损害,可放心使用。软件还支持从磁盘映像文件中恢复照片文件,方便进行异地数据恢复,软件本身也具有制作磁盘映像文件的功能。   本软件目前仅支持恢复JPG格式的照片文件(更多文件格式正在增加中),JPG格式是最流行的数码照片文件格式,绝大多数数码相机及拍照手机均采用该格式存储照片,因此慧龙照片恢复软件能胜任绝大多数照片文件的恢复任务,照片恢复的成功率也很高。   慧龙照片恢复软件会提取照片文件中的拍照时间,作为恢复出来的文件修改时间,方便恢复后对照片进行整理。只要在文件夹里选择按“修改时间”排序,照片就是按拍照的先后顺序排列了,非常方便。   提示: 不要下载软件到要恢复数据的盘符里,也不要解压文件到要恢复的盘符里,否则可能再次破坏源数据。如果是相机直接连接电脑进行数据恢复,请保证电池电量足够,免得恢复过程中耗完电了,下次又要重新扫描。   为什么选择慧龙照片恢复软件?与其他数据恢复软件相比,慧龙照片恢复软件具有以下特点:   1. 逐一扫描存储扇区,寻找照片数据,提高照片文件恢复成功率;   2. 使用超简单,鼠标点击几下即可开始恢复;   3. 体积小,下载快,绿色软件,无需安装,不会在系统里留下任何垃圾;   4. 不依赖于文件系统,即使目录区、文件分配表完全损毁也能进行恢复;   5. 支持从映像文件恢复照片,因而可完全避免反复扫描对源数据造成损害;软件本身也包含制作映像文件的功能。

22,301

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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