A confusão é justificada até certo ponto - e outros RDBMS como o Oracle possuem parâmetros de procedimento armazenado que podem ser do tipo
IN (somente entrada), OUT (somente saída) ou INOUT (ambos os sentidos - tipo de parâmetro "passar por referência"). O SQL Server é um pouco desleixado aqui, pois rotula o parâmetro como
OUTPUT , mas na verdade isso significa INPUT /OUTPUT - basicamente significa apenas que o proc armazenado tem a chance de retornar um valor de sua chamada nesse parâmetro. Então, sim - mesmo que seja chamado de
OUTPUT parâmetro, é realmente mais um INPUT /OUTPUT parâmetro, e aqueles IN , INOUT , OUT como no Oracle não existem no SQL Server (no T-SQL).