DeriveParameters
Метод извлекает сведения о параметрах из хранимой процедуры, указанной в объекте LinterDbCommand, и включает их в коллекцию параметров Parameters указанного объекта LinterDbCommand.
DeriveParameters перезаписывает любые имеющиеся сведения о параметрах для объекта LinterDbCommand.
Для получения этих сведений DeriveParameters требуется дополнительное обращение к СУБД. Если сведения о параметрах известны заранее, рекомендуется явно заполнить ими коллекцию параметров.
DeriveParameters можно использовать только с хранимыми процедурами.
Синтаксис
public static void DeriveParameters(LinterDbCommand cmd);
cmd – объект LinterDbCommand, определяющий хранимую процедуру, из которой необходимо извлечь сведения о параметрах. Извлеченные параметры добавляются в коллекцию параметров Parameters данного объекта LinterDbCommand.
Возвращаемое значение
Значение типа void.
Исключения
ArgumentNullException | Параметр cmd равен null. | |
InvalidOperationException | Возможные причины:
| |
LinterSqlException | Код завершения СУБД ЛИНТЕР не равен 0. |
Пример
// C#
using System;
using System.Data;
using System.Data.LinterClient;
class DeriveParametersSample
{
static void Main()
{
LinterDbConnection conn = null;
try
{
// Соединение с БД
conn = new LinterDbConnection(
"DataSource=LOCAL;UserID=SYSTEM;Password=MANAGER8");
conn.Open();
// Создание процедуры
LinterDbCommand cmd = conn.CreateCommand();
cmd.CommandText = @"
create or replace procedure SUMMA (in A int; in B int)
result int for debug
code
return A + B;
end;";
cmd.ExecuteNonQuery();
// Выполнение процедуры
cmd.CommandText = "SUMMA";
cmd.CommandType = CommandType.StoredProcedure;
LinterDbCommandBuilder.DeriveParameters(cmd);
cmd.Parameters["A"].Value = 2;
cmd.Parameters["B"].Value = 3;
int result = (int)cmd.ExecuteScalar();
Console.WriteLine("Результат: " + result);
}
catch (LinterSqlException ex)
{
Console.WriteLine(
"Исключение ядра СУБД ЛИНТЕР \n" +
"Текст сообщения: " + ex.Message + "\n" +
"Код СУБД ЛИНТЕР: " + ex.Number + "\n" +
"Код операционной системы: " + ex.LinterSysErrorCode + "\n");
}
catch (Exception ex)
{
Console.WriteLine(
"Исключение ADO.NET провайдера \n" +
"Тип ошибки: " + ex.GetType() + "\n" +
"Сообщение: " + ex.Message + "\n");
}
finally
{
Console.WriteLine("Освобождение ресурсов.");
if (conn != null)
{
conn.Close();
}
Console.WriteLine("Выполнение команды завершено.");
}
}
}