Поделиться через


Как выполнить хранимую процедуру (с использованием синтаксиса RPC) и обработать коды возврата и выходные параметры (OLE DB)

Хранимые процедуры SQL Server могут иметь целочисленные коды возврата и выходные параметры. Коды возврата и выходные параметры пересылаются с сервера в последнем пакете данных, и, следовательно, недоступны приложению, пока набор строк не будет полностью освобожден. Если команда возвращает множественные результаты, данные выходных параметров будут доступны, когда метод IMultipleResults::GetResult вернет DB_S_NORESULT, или когда интерфейс IMultipleResults полностью освободится, в зависимости от того, какое из этих событий произойдет раньше.

Обработка кодов возврата и выходных параметров

  1. Сконструируйте инструкцию SQL, использующую экранирующую последовательность удаленного вызова процедуры.

  2. Вызовите метод ICommandWithParameters::SetParameterInfo, чтобы описать параметры для поставщика. Заполните структуры PARAMBINDINFO в массиве информацией о параметрах.

  3. Создайте набор привязок (по одной для каждого маркера параметра) с помощью массива структур DBBINDING.

  4. Создайте метод доступа для определенных параметров с помощью метода IAccessor::CreateAccessor. Метод CreateAccessor создает метод доступа на основе набора привязок.

  5. Заполните структуру DBPARAMS.

  6. Выполните команду Execute (в данном случае это вызов хранимой процедуры).

  7. Обработайте набор строк и освободите его с помощью метода IRowset::Release.

  8. Обработайте значения кода возврата и выходного параметра, полученные от хранимой процедуры.

Пример

В этом примере показана обработка набора строк, а также кода возврата и выходного параметра. Результирующие наборы не обрабатываются. Далее представлен образец хранимой процедуры, которую использует приложение.

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_B.cpp. Архив, содержащий этот пример, можно загрузить на странице Загрузки SQL Server на портале MSDN.

Этот образец создан с помощью Microsoft Visual C++ 2005.

Примечание по безопасностиПримечание по безопасности

При возможности используйте проверку подлинности Windows. Если проверка подлинности Windows недоступна, запросите у пользователя ввод учетных данных во время выполнения. Избегайте хранения учетных данных в файле. Если необходимо сохранить учетные данные, зашифруйте их с помощью API-интерфейса шифрования Win32.

См. также

Основные понятия