SQL Server 2014 Management Studio - issues with PRINT

I can't understand how print works, I didn't find good information.

declare @count int, 
        @experience varchar(30),
        @date date,
        @salary_old int, 
        @salary_new int,
        @first_name varchar(30), 
        @second_name varchar(30), 
        @last_name varchar(30), 
        @i int=0

set @count = (select count(*) from cadre)

print ('-----------------------------------------------------------------------------------\n')
print ('id\tfirst_name\tsecond_name\tlast_name\told_salary\tnew_salary\texperience(years)\n')
WHILE @i < @count
BEGIN
    set @date = (select date_of_start_work from cadre where id_cadre=@i)
    set @first_name = rtrim((select first_name from cadre where id_cadre=@i))
    set @second_name = rtrim((select @second_name from cadre where id_cadre=@i))
    set @last_name = rtrim((select @last_name from cadre where id_cadre=@i))
    set @experience =  rtrim(cast( ((select year( (SELECT GETDATE() ))) - (select year(@date))) as varchar(30) ))
    set @salary_old = rtrim(cast((select salary from cadre where id_cadre=@i) as varchar(30)))
    set @salary_new = @salary_old*(@experience/100+1);

    update cadre
    set salary = @salary_new 
    where id_cadre = @i

    print(rtrim(cast(@i as varchar(10)))+'\t'+@first_name+'\t'+@second_name+'\t'+@last_name+'\t'+@salary_old+'\t'+rtrim(cast(@salary_new as varchar(10)))+'\t'+@experience+N'\t')

    set @i=@i+1
END

print(@count)

ERROR:

Msg 245, Level 16, State 1, Line 28
Ошибка преобразования значения varchar "\t" в тип данных int.

Error converting varchar "\ t" value to data type int.

Upvotes: 0

Views: 43

Answers (1)

TMonte
TMonte

Reputation: 108

You need to cast @salary_old or you can use str(@salary_old)

Upvotes: 1

Related Questions