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).