прежде всего, вы не можете разыграть '11test' как целое число
секунду, если значение можно преобразовать в целое число, вам не нужно приводить, произойдет неявное приведение
DECLARE @foo AS CHAR(6)
set @foo = '2'
EXEC testMe @test =@foo
Если вы хотите проверить, может ли оно быть преобразовано в int, возьмите функцию IsInt отсюда: IsNumeric, IsInt, IsNumber и используйте ее для проверки перед выполнением вызова proc
EDIT
вот как вы можете это сделать
DECLARE @foo AS CHAR(6)
set @foo = '11test'
SET @foo = CAST(Substring(@foo,1,2) as int)
EXEC testMe @test = @foo
вы не можете передавать функции процессам, поэтому GETDATE () также не работает,либо используйте промежуточную переменную, либо приведите обратно к той же переменной