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("Выполнение команды завершено."); } } }