刚刚学存储过程,在查询分析器里运行通过,但是StudentInfo里没有被更新存储过程:
CREATE PROCEDURE Myupdate
@Scorename varchar(20),
@Score numeric(5),
@SuID int
as
begin
BEGIN TRANSACTION
update StudentInfo set @Scorename=@Score where SI_ID_N=@SuID
IF @@Error<>0
goto Errorhandle
COMMIT TRANSACTION
RETURN 0
Errorhandle:
ROLLBACK TRANSACTION
RETURN 1
end
GO测试:
Declare @Scorename varchar(20)
Declare @Score numeric(5)
Declare @SuID intset @Scorename='score1'
set @Score=8
set @SuID=3exec Myupdate @Scorename,@Score,@SuID
CREATE PROCEDURE Myupdate
@Scorename varchar(20),
@Score numeric(5),
@SuID int
as
begin
BEGIN TRANSACTION
update StudentInfo set @Scorename=@Score where SI_ID_N=@SuID
IF @@Error<>0
goto Errorhandle
COMMIT TRANSACTION
RETURN 0
Errorhandle:
ROLLBACK TRANSACTION
RETURN 1
end
GO测试:
Declare @Scorename varchar(20)
Declare @Score numeric(5)
Declare @SuID intset @Scorename='score1'
set @Score=8
set @SuID=3exec Myupdate @Scorename,@Score,@SuID
改為
EXEC('update StudentInfo set ' +@Scorename +' = ' + Rtrim(@Score) + ' where SI_ID_N= ' + Rtrim(@SuID))
Select @S='update StudentInfo set ' +@Scorename +' = ' + Rtrim(@Score) + ' where SI_ID_N= ' + Rtrim(@SuID)
EXEC(@S)
alter PROCEDURE Myupdate
@Scorename varchar(20),
@Score numeric(5),
@SuID int
as
begin
BEGIN TRANSACTIONdeclare @str varchar(8000)
set @str ='update StudentInfo set '
+@Scorename +' = '+rtrim(@Score)
+ ' where SI_ID_N= '+rtrim(@SuID)exec(@str)
IF @@Error<>0
goto Errorhandle
COMMIT TRANSACTION
RETURN 0
Errorhandle:
ROLLBACK TRANSACTION
RETURN 1
end
GO