ALTER PROCEDURE jiang  
@ID int,
@jingjin int
AS
declare @a int 
declare @number varchar(50) 
declare @ka_number varchar(50)  
set @number=@ID
set @a=1 
while @a<=5
begininsert into jiangjine (ka_number,yingde) values (@number,@jingjin)
set @a=@a+1 end
怎么在里面写事务让错误的时候回滚数据,还有为什么set @number=@ID不能把值传过去,怎么才能传过去?

解决方案 »

  1.   

    ALTER PROCEDURE jiang  
    @ID int,
    @jingjin int
    AS
    declare @a int 
    declare @number varchar(50) 
    declare @ka_number varchar(50)  
    set @number=@ID
    set @a=1 
    while @a<=5
    begin
    BEGIN TRANSACTION
    insert into jiangjine (ka_number,yingde) values (@number,@jingjin)
    IF (@@error <> 0)
    ROLLBACK TRANSACTION
    else
    COMMIT TRANSACTION
    set @a=@a+1 end
      

  2.   

    还有为什么set @number=@ID不能把值传过去,怎么才能传过去?
      

  3.   

    set @number = (select ka_number from ka where tjka_number=@number)
    这么写为什么不能赋值过去??
      

  4.   

    使用事务,格式如下:set xact_abort onbegin tran...commit tran
      

  5.   

    不传过去了吗,不信重建往里加 print @number
      

  6.   

    set @number = (select ka_number from ka where tjka_number=@number)
    这么写为什么不能赋值过去??
    这个传值 这个为什么不能传???
      

  7.   

    若你在上面已经给@number 赋值了,并且(select ka_number from ka where tjka_number=@number)只有一个值,这样是可以赋值的