sql server创建过程使用游标

sql server创建一个存储过程pro7, 将所有员工的基本工资提高20%,要求增加的幅度不超过300元。调用该存储过程,要求将每名员工调薪前后的工资输出到屏幕(要使用游标)但是结果说@涨幅 语法错误,close也有语法错误,不知道要怎么改。
表名是emp

img

if (exists (select * from sys.objects where name = 'pro7'))
   drop proc pro7
   go
   create proc pro7
   as
   declare newsal cursor FOR select 姓名, 基本工资 from emp;
    declare @涨幅 char(5);
   declare @涨后的工资 char(5);
   declare @name char(5);
   declare @vsal char(5);   
   open newsal;
   fetch newsal into  @涨幅,@涨后的工资;
   WHILE(@@FETCH_STATUS = 0)
begin
   @涨幅=@vsal * 0.2
   if(@涨幅<300 or @涨幅=300)
   update emp set 基本工资 = 基本工资+@涨幅 where 姓名=@name;
   
   print '员工:'+@name+'涨了'+@涨幅+'的工资';
end
   CLOSE mycursor
   DEALLOCATE mycursor
   go

```

數字類的不是應該用 decimal 嗎?怎麼用 char 呢?