当前位置: 代码迷 >> Sql Server >> sql server 事物解决方案
  详细解决方案

sql server 事物解决方案

热度:77   发布时间:2016-04-24 09:38:03.0
sql server 事物
如题:
创建一个存储过程,里面包含事物,创建成功,在调用时候 错误信息:出现异常,错误编号:207,错误消息:列名 'OIP' 无效。
1

求各位解救解救!
Sql存储过程代码如下:
create proc proc_tranDemo

@tablename1 nvarchar(50),
@imagepwd nvarchar(20),
@imageName nvarchar(50),
@imageBigname nvarchar(50),

@tablename2 nvarchar(50),
@name nvarchar(20),
@phone nvarchar(30),
@openid nvarchar(30)
as
declare @err int
set @err = 0

 begin TRANSACTION --事物开始
 BEGIN TRY 
 DECLARE @str nVARCHAR(2000)
 set @str='update '+@tablename1+' set [Status]=1 where ImagePwd='+@imagepwd+' and ImageName='+@imageName+' and ImageBigname='+@imageBigname+'' 
 execute sp_executesql @str 
 set @err = @err + @@error
 
 DECLARE @strs nVARCHAR(2000)
 set @strs='insert into '+@tablename2+' (name,phone,openid,ImageName,Imagepwd,[Status],ImageBigname) values('+@name+','+@phone+','+@openid+','+@imageName+','+@imagepwd+',0,'+@imageBigname+')'
 execute sp_executesql @strs 
 set @err = @err + @@error
 end try
 BEGIN CATCH
    PRINT '出现异常,错误编号:' + convert(varchar,error_number()) + ',错误消息:' + error_message()
    SET @err = @err + 1
END CATCH
 if(@err>0)
 begin
   rollback TRANSACTION --错误回滚事物
 end
 else
 begin
  commit TRANSACTION    --无错误提交事物
 end
  print @err
  

------解决思路----------------------
--拼动态SQL时,字符串值要加引号。其余一样处理
set @str='update '+@tablename1+' set [Status]=1 where ImagePwd='''+@imagepwd+''' and ...'
  相关解决方案