Бөлісу құралы:


Параметры команды собственного клиента SQL Server

Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure azure Synapse Analytics Analytics Platform System (PDW)

Параметры помечаются в тексте команды знаками вопроса. Например, следующая инструкция SQL помечена для одного входного параметра:

{call SalesByCategory('Produce', ?)}  

Чтобы повысить производительность сетевого трафика, поставщик OLE DB собственного клиента SQL Server не автоматически получает сведения о параметрах, если только не вызывается ICommandWithParameters::GetParameterInfo или ICommandPrepare::P repare перед выполнением команды. Это означает, что поставщик OLE DB собственного клиента SQL Server не автоматически:

  • не проверяет правильность типа данных, указанного с помощью ICommandWithParameters::SetParameterInfo;

  • Сопоставление из DBTYPE, указанного в сведениях о привязке метода доступа, с правильным типом данных SQL Server для параметра.

Приложения получат возможные ошибки или потерю точности с помощью любого из этих методов, если они указывают типы данных, несовместимые с типом данных SQL Server параметра.

Чтобы гарантировать, что подобная ситуация не произойдет, для приложения необходимо:

  • Убедитесь, что pwszDataSourceType соответствует типу данных SQL Server для параметра, если жестко кодирует ICommandWithParameters::SetParameterInfo.

  • Убедитесь, что значение DBTYPE, привязанное к параметру, имеет тот же тип, что и тип данных SQL Server для параметра, если жестко закодировать метод доступа.

  • Код приложения для вызова ICommandWithParameters::GetParameterInfo , чтобы поставщик смог получить типы данных SQL Server динамически. Обратите внимание, что это приведет к дополнительному обмену данными с сервером.

Примечание.

Поставщик не поддерживает вызов ICommandWithParameters::GetParameterInfo для любой инструкции SQL Server UPDATE или DELETE, содержащей предложение FROM; для любой инструкции SQL в зависимости от вложенных запросов, содержащих параметры; для инструкций SQL, содержащих маркеры параметров в обоих выражениях сравнения, например, или квантифицированного предиката; или запросов, где один из параметров является параметром функции. При обработке пакета инструкций SQL поставщик также не поддерживает вызов метода ICommandWithParameters::GetParameterInfo для маркеров параметров в выражениях после обработки первой инструкции в пакете. В команде Transact-SQL не допускаются комментарии (/* */).

Поставщик OLE DB собственного клиента SQL Server поддерживает входные параметры в командах инструкций SQL. При командах вызова процедур поставщик OLE DB собственного клиента SQL Server поддерживает входные, выходные и выходные параметры. Значения выходных параметров возвращаются приложению либо при выполнении (только если не возвращаются наборы строк), либо когда все возвращаемые наборы строк уже использованы приложением. Чтобы проверить допустимость возвращаемых значений, используется IMultipleResults для принудительного потребления набора строк.

Имена параметров хранимых процедур не обязательно указывать в структуре DBPARAMBINDINFO. Используйте ЗНАЧЕНИЕ NULL для элемента pwszName , чтобы указать, что поставщик OLE DB собственного клиента SQL Server должен игнорировать имя параметра и использовать только порядковый номер, указанный в элементе rgParamOrdinals ICommandWithParameters ::SetParameterInfo. Если текст команды содержит как именованные, так и неименованные параметры, все неименованные параметры должны быть указаны до именованных параметров.

Если указано имя параметра хранимой процедуры, поставщик OLE DB собственного клиента SQL Server проверяет имя, чтобы убедиться, что он действителен. Поставщик OLE DB собственного клиента SQL Server возвращает ошибку при получении ошибочного имени параметра от потребителя.

Примечание.

Чтобы предоставить поддержку XML-кода SQL Server и определяемых пользователем типов (UDT), поставщик OLE DB собственного клиента SQL Server реализует новый интерфейс ISSCommandWithParameters .

См. также

Команды