Введение в программирование на C# 2.0

Получение возвращаемого значения


Сохраняемые процедуры могут обеспечить передачу возвращаемого значения функции приложения, которое обеспечило их вызов. Это передача может быть обеспечена непосредственно параметром при установке свойства Direction параметра в Output или InputOutput либо за счет непосредственного возвращения значения сохраняемой процедурой, при котором используется параметр со свойством, установленным в ReturnValue.

Получение значений, возвращаемых сохраняемой процедурой.

  • Использование параметра.

Для этого следует создать параметр с Direction-свойством, установленным в Output или InputOutput (если параметр используется в процедуре как для получения, так и для отправления значений). Очевидно, что тип параметра должен соответствовать ожидаемому возвращаемому значению.

После выполнения процедуры можно прочитать значение возвращаемого параметра.

  • Непосредственный перехват возвращаемого значения сохраняемой процедурой.

Для этого следует создать параметр с Direction-свойством, установленным в ReturnValue. Такой параметр должен быть первым в списке параметров.

При этом тип параметра должен соответствовать ожидаемому возвращаемому значению.

Предложения SQL – Update, Insert, and Delete возвращают целочисленное значение, соответствующее количеству записей, на которые повлияло выполнение данного предложения.

Это значение может быть получено как возвращаемое значение метода ExecuteNonQuery.

Следующий пример демонстрирует, как получить возвращаемое значение, возвращаемое хранимой процедурой CountAuthors. В этом случае предполагается, что первый параметр списка параметров конфигурируется как возвращаемый:

int cntAffectedRecords; // The CommandText and CommandType properties can be set // in the Properties window but are shown here for completeness. oleDbcommand1.CommandText = "CountAuthors"; oleDbCommand1.CommandType = CommandType.StoredProcedure; oleDbConnection1.Open(); oleDbCommand1.ExecuteNonQuery(); oleDbConnection1.Close(); cntAffectedRecords = (int)(OleDbCommand1.Parameters["retvalue"].Value); MessageBox.Show("Affected records = " + cntAffectedRecords.ToString());



Содержание раздела