Why are stored procedure parameters marked as OUTPUT being treated as input/output?
SQL Server stores the metadata for stored procedure parameters in the syscolumns table. The isoutparam column of syscolumns (or the documented IsOutParam property returned by COLUMNPROPERTY) specifies whether a parameter is input (0) or input/output (1). There is no distinction between input/output and output-only parameters. As a result, when the VS .NET custom tool and SqlMethods command-line tool generate data access methods, parameters marked as OUTPUT in a stored procedure’s definition appear on input and output methods. A way to get around this problem is to provide an overload of the input method that sets the parameters that are logically output-only to empty values.