The confusion is justified to a degree – and other RDBMS like Oracle do have stored procedure parameters which can be of type IN
(input only), OUT
(output only), or INOUT
(both ways – “pass by reference” type of parameter).
SQL Server is a bit sloppy here since it labels the parameter as OUTPUT
, but really, this means INPUT
/OUTPUT
– it basically just means that the stored proc has a chance of returning a value from its call in that parameter.
So yes – even though it’s called OUTPUT
parameter, it’s really more of an INPUT
/OUTPUT
parameter, and those IN
, INOUT
, OUT
like in Oracle do not exist in SQL Server (in T-SQL).