= Stored Procedures in MSSQL

This guide documents the workaround implemented to allow executing stored procedures
in MSSQL, as well as getting the value of output variables.

== Simple Execution

The following stored procedure is used as an example:

  CREATE PROCEDURE dbo.SequelTest(
    @Input varchar(25),
    @Output int OUTPUT
  )
  AS
    SET @Output = LEN(@Input)
    RETURN 0

Execute it as follows:

  DB.call_mssql_sproc(:SequelTest, {:args => ['Input String', :output]})

Use the +:output+ symbol to denote an output variable. The result will contain a
hash of the output variables, as well as the result code and number of affected rows:

  {:result => 0, :numrows => 1, :var1 => "1"}

Output variables will be strings by default. To specify their type, include the
SQL type:

  DB.call_mssql_sproc(:SequelTest, {:args => ['Input String', [:output, 'int']]})

Result:

  {:result => 0, :numrows => 1, :var1 => 1}

Output variables will be named +var#{n}+ where n is their zero indexed position
in the parameter list. To name the output variable, include their name:

  DB.call_mssql_sproc(:SequelTest, {:args => ['Input String', [:output, nil, 'Output']]})

Result:

  {:result => 0, :numrows => 1, :output => "1"}
