Como passar o parâmetro de saída para um procedimento armazenado?

Eu escrevi um procedimento armazenado com o seguinte formato:

ALTER PROCEDURE usp_data_migration 
   (@sourceDatabase varchar(50),
    @sourceTable varchar(50),
    @targetDatabase varchar(50),
    @targetTable varchar(50),
    @finaloutput varchar(max) output)
AS
BEGIN
----Set of SQL Blocks


END

Então, estou executando o procedimento:

DECLARE @finaloutput1 varchar(300)

EXEC usp_data_migration 'Yousuf', 'emp', '[City Branch]', 'emp_tgt', @finaloutput1 output 

SELECT @finaloutput1 

Ao executar dessa maneira, não faço a saída adequada.

Quando executo desta maneira:

DECLARE @finaloutput1 varchar(300)

EXEC usp_data_migration @sourceDatabase = 'Yousuf',
                        @sourceTable = 'emp',
                        @targetDatabase = '[City Branch]',
                        @targetTable = 'emp_tgt',
                        @finaloutput1 output 

SELECT @finaloutput1 

Recebo uma mensagem de erro dizendo:

Msg 119, Nível 15, Estado 1, Linha 41
Deve passar o número de parâmetro 5 e os parâmetros subsequentes como '@name = value'. Depois que o formulário '@name = value' for usado, todos os parâmetros subsequentes deverão ser passados no formato '@name = value'.

E se eu removi meu parâmetro de saída e execute o procedimento, obtenho a saída desejada, mas não consigo obter meu resultado como saída.

EXEC usp_data_migration @sourceDatabase = 'Yousuf',
                        @sourceTable = 'emp',
                        @targetDatabase = '[City Branch]',
                        @targetTable = 'emp_tgt'

O que devo fazer?

Desde já, obrigado.

questionAnswers(3)

yourAnswerToTheQuestion