Как выполнить хранимую процедуру (с использованием синтаксиса ODBC CALL) и обработать коды возврата и выходные параметры (OLE DB)
Хранимые процедуры SQL Server могут иметь целочисленные коды возврата и выходные параметры. Коды возврата и выходные параметры отправляются в последнем пакете с сервера и потому недоступны приложению до полного освобождения набора строк. Если команда возвращает несколько результатов, данные выходного параметра становятся доступны, когда IMultipleResults::GetResult возвращает DB_S_NORESULT или интерфейс IMultipleResults полностью освобождается, в зависимости от того, что произойдет раньше.
Обработка кодов возврата и выходных параметров
Сконструируйте инструкцию SQL, использующую escape-последовательность ODBC CALL. Инструкция должна использовать маркеры параметров для каждого изменяемого входного и выходного параметра и для каждого возвращаемого процедурой значения (если есть). Для входных параметров можно использовать маркеры параметров или явно указывать значения.
Создайте набор привязок (по одной для каждого маркера параметра) с помощью массива структур DBBINDING.
Создайте метод доступа для определенных параметров с помощью метода IAccessor::CreateAccessor. Метод CreateAccessor создает метод доступа на основе набора привязок.
Заполните структуру DBPARAMS.
Выполните команду Execute (в данном случае это вызов хранимой процедуры).
Обработайте набор строк и освободите его с помощью метода IRowset::Release.
Обработайте значения кода возврата и выходного параметра, полученные от хранимой процедуры.
Пример
В этом примере показана обработка набора строк, а также кода возврата и выходного параметра. Результирующие наборы не обрабатываются. Далее представлен образец хранимой процедуры, которую использует приложение.
USE AdventureWorksDROP PROCEDURE myProcGOCREATE PROCEDURE myProc @inparam int, @outparam int OUTPUTASSELECT Color, ListPrice FROM Production.Product WHERE Size > @inparamSELECT @outparam = 100IF (@outparam > 0) RETURN 999ELSE RETURN 888GO
Полный образец кода находится в файле InitializeAndEstablishConnection_A.cpp. Можно загрузить архив с образцом со страницы SQL Server Downloads на веб-узле MSDN.
Этот образец создан с помощью Microsoft Visual C++ 2005.
Примечание по безопасности |
---|
При возможности используйте проверку подлинности Windows. Если проверка подлинности Windows недоступна, запросите у пользователя ввод учетных данных во время выполнения. Избегайте хранения учетных данных в файле. Если необходимо сохранить учетные данные, зашифруйте их с помощью API-интерфейса шифрования Win32. |