6.1.5 Работа с хранимыми процедурами
В этом разделе показано, как работать с хранимыми процедурами. Размещение ресурсоемких операций базы данных в хранимых процедурах позволяет определять API для вашего приложения базы данных. Вы можете повторно использовать этот API в нескольких приложениях и на нескольких языках программирования. Этот метод позволяет избежать дублирования кода базы данных, экономя время и усилия при внесении обновлений из-за изменений схемы, оптимизации производительности запросов или добавлении новых операций базы данных для ведения журнала, обеспечения безопасности и так далее. Перед прохождением этого руководства ознакомьтесь с операторами и , которые создают различные типы хранимых процедур.
В целях этого руководства вы создадите простую хранимую процедуру, чтобы увидеть, как она может вызываться из MySQL Connector/NET. В программе MySQL Client подключитесь к базе данных world и введите следующую хранимую процедуру:
DELIMITER //
CREATE PROCEDURE country_hos
(IN con CHAR(20))
BEGIN
SELECT Name, HeadOfState FROM Country
WHERE Continent = con;
END //
DELIMITER ;
Проверьте, что хранимая процедура работает как ожидается, введя следующее в интерпретатор команд mysql:
CALL country_hos('Europe');
Хранимая процедура принимает один параметр, который представляет континент для ограничения поиска.
После подтверждения наличия и корректности хранимой процедуры вы можете увидеть, как получить к ней доступ из Connector/NET.
Вызов хранимой процедуры из вашего приложения Connector/NET аналогичен методам, которые вы видели ранее в этом руководстве. Создается объект MySqlCommand, но вместо того, чтобы принимать SQL-запрос в качестве параметра, он принимает имя вызываемой хранимой процедуры. Установите объект MySqlCommand на тип хранимой процедуры, как показано в следующем фрагменте кода:
string rtn = "country_hos";
MySqlCommand cmd = new MySqlCommand(rtn, conn);
cmd.CommandType = CommandType.StoredProcedure;
В этом случае хранимой процедуре требуется передать параметр. Это можно сделать, используя методы, описанные в предыдущем разделе о параметрах, Раздел 6.1.4, «Работа с параметрами», как показано в следующем фрагменте кода:
cmd.Parameters.AddWithValue("@con", "Europe");
Значение параметра @con более реалистично могло бы быть получено из элемента управления вводом пользователя, но для простоты в этом примере оно задается как статическая строка.
На этом этапе все настроено, и вы можете вызвать процедуру, используя методы, изученные в предыдущих разделах. В этом случае используется метод ExecuteReader объекта MySqlCommand.
Следующий код демонстрирует полный пример хранимой процедуры.
using System;
using System.Data;
using MySql.Data;
using MySql.Data.MySqlClient;
public class Tutorial6
{
public static void Main()
{
string connStr = "server=localhost;user=root;database=world;port=3306;password=******";
MySqlConnection conn = new MySqlConnection(connStr);
try
{
Console.WriteLine("Connecting to MySQL...");
conn.Open();
string rtn = "country_hos";
MySqlCommand cmd = new MySqlCommand(rtn, conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@con", "Europe");
MySqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
Console.WriteLine(rdr[0] + " --- " + rdr[1]);
}
rdr.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
conn.Close();
Console.WriteLine("Done.");
}
}
В этом разделе вы узнали, как вызвать хранимую процедуру из Connector/NET. На данный момент это завершает наше вводное руководство по программированию с Connector/NET.
© 2025 Oracle
Licensed under the GPLv2 License.