У меня есть хранимая процедура в Microsoft SQL Сервер, который вставляет данные в таблицу и возвращает в качестве вывода код ошибки и описание ошибки.
private string[] SetServiceUpdateData(XmlDocument xmlDoc)
{
string[] returnParms = new string[2];
SqlConnection conn = new SqlConnection(ConfigurationManager.AppSettings["Acessos"].ToString());
try
{
using (SqlCommand cmd = new SqlCommand("dbo.sp_ServiceUpdateData", conn))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@Id", SqlDbType.VarChar, 255).Value = ValidateParameter(xmlDoc.GetElementsByTagName("Id"));
cmd.Parameters.Add("@Status", SqlDbType.VarChar, 255).Value = ValidateParameter(xmlDoc.GetElementsByTagName("Status"));
cmd.Parameters.Add("@ERROR_CODE", SqlDbType.TinyInt, 4).Direction = ParameterDirection.Output;
cmd.Parameters.Add("@ERROR_DESCRIPTION", SqlDbType.VarChar, 255).Direction = ParameterDirection.Output;
conn.Open();
cmd.ExecuteNonQuery();
dataReader.Close();
returnParms[0] = Convert.ToString(cmd.Parameters["@Error_code"].Value);
returnParms[1] = Convert.ToString(cmd.Parameters["@ERROR_DESCRIPTION"].Value);
}
}
catch (Exception e)
{
returnParms[0] = returnParms[0] + e.Source;
returnParms[1] = returnParms[1] + e.Message;
}
finally
{
if ((conn != null) && (conn.State == ConnectionState.Open))
{
conn.Close();
conn.Dispose();
conn = null;
}
}
return returnParms;
}
Хранимая процедура выглядит примерно так ( имеет много параметров, поэтому я удалил их много):
@Id varchar(255) = NULL,
@Status varchar(255) = NULL,
@ERROR_CODE TINYINT = NULL OUTPUT,
@ERROR_DESCRIPTION VARCHAR(255) = NULL OUTPUT
BEGIN
UPDATE TABLE
SET Status = ISNULL(@Status, Status)
WHERE Id = @Id
SELECT Status
FROM TABLE
WHERE Id = @Id
END
Код и хранимая процедура работают нормально, я могу вставить значения и вернуть результаты. Хранимая процедура также имеет выбор после вставки, который мне нужно вернуть на json.
Как я могу вернуть значение этого выбора одновременно с возвратом возвращаемых параметров из хранимой процедуры?