我有两个名为ALUMNO
和ALUMNO_GENERAL
的表。
我想创建一个存储过程,通过查看声明为存储过程参数的变量@campo
来自动选择要更新的表。
当我执行下面的过程时,它会显示1 row affected
,但不会更新表的值。
exec updateAl 'CALLE','0015','ROJO'
存储过程:
create procedure updateAl
@campo varchar(30), @matr varchar(10), @newVal varchar(15)
as begin
if @campo IN ('AP_PATERNO' , 'AP_MATERNO', 'NOMBRE', 'GRUPO', 'TURNO' , 'SEMESTRE' , 'STATUS' , 'NUMEMPLEADO')
begin
select @campo
declare @sql varchar (1000)
select @sql= 'update alumno set '+ @campo+'='+@newVal +' where MATRICULA='+@matr
exec(@sql)
end
else
update ALUMNO_GENERAL set @campo =@newVal where MATRICULA=@matr
end
答案 0 :(得分:1)
你的动态sql不正确,试试这个:
select @sql= 'update alumno set '+ @campo+'='''+@newVal +''' where MATRICULA='''+@matr + '''
exec(@sql)
end