ALTER PROCEDURE [dbo].[money_delzhang]
@id int,
@id2 int=0,
@orderid varchar(50),--记录编号
@acctid int,
@reveune money,--金额
@expend money,
@rate money=1,
@rate2 money=1,
@acct2id int=0,
@shouzhi int=0 --非0为收入, 默认支出
AS
SET NOCOUNT ON;
Begin
Begin Tran
declare @strSql varchar(5000);
declare @acsql varchar(5000);
declare @acsql2 varchar(5000);set @strSql='delete [money_C] where id=convert(int,'+cast(@id as varchar)+') or id=convert(int,'+cast(@id2 as varchar)+')';--这下面语句不能扫行, 我测过程序传过来的值都没问题, 是不是有哪里语法错误?
if @shouzhi =2
Begin
set @acsql='update [money_usera] set [amount]=[amount]-convert(money,'+cast((@reveune/@rate) as varchar)+') where [id]=convert(int,'+cast(@acctid as varchar)+')';
set @acsql2='update [money_usera] set [amount]=[amount]+convert(money,'+cast((@reveune/@rate2) as varchar)+') where [id]=convert(int,'+cast(@acct2id as varchar)+')';
End
if @shouzhi =3
Begin
set @acsql='update [money_usera] set [amount]=[amount]+convert(money,'+cast((@reveune/@rate) as varchar)+') where [id]=convert(int,'+cast(@acctid as varchar)+')';
set @acsql2='update [money_usera] set [amount]=[amount]-convert(money,'+cast((@reveune/@rate2) as varchar)+') where [id]=convert(int,'+cast(@acct2id as varchar)+')';
End
exec(@acsql);
exec(@strSql);
if @acsql2 != null
begin
exec(@acsql2);
end
End
Commit Tranif @@Error>0
rollback tran以上代码中, delete每次都可以成功执行, 两个update都不能执行成功, 我试着把@acsql2这个update语句备注掉, @accsql就可以成功执行,  看了半年搞不懂怎么回事, 请高手指教下