Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Параметры в вызовах процедур могут быть входным, входным и выходным или выходными параметрами. Это отличается от параметров во всех остальных инструкциях SQL, которые всегда являются входными параметрами.
Входные параметры используются для отправки значений в процедуру. Например, предположим, что таблица "Части" содержит столбцы PartID, Description и Price. Процедура InsertPart может иметь входной параметр для каждого столбца в таблице. Например:
{call InsertPart(?, ?, ?)}
Драйвер не должен изменять содержимое входного буфера, пока SQLExecDirect или SQLExecute не возвращает SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, SQL_INVALID_HANDLE или SQL_NO_DATA. Содержимое входного буфера не должно быть изменено, пока SQLExecDirect или SQLExecute возвращает SQL_NEED_DATA или SQL_STILL_EXECUTING.
Входные и выходные параметры используются как для отправки значений в процедуры, так и для получения значений из процедур. Использование одного и того же параметра, что и входной, и выходной параметр, как правило, является запутанным и следует избежать. Например, предположим, что процедура принимает идентификатор заказа и возвращает идентификатор клиента. Это можно определить с помощью одного входного и выходного параметра:
{call GetCustID(?)}
Возможно, лучше использовать два параметра: входной параметр для идентификатора заказа и выходного или входного или выходного параметра для идентификатора клиента:
{call GetCustID(?, ?)}
Выходные параметры используются для получения возвращаемого значения процедуры и получения значений из аргументов процедуры; процедуры, возвращающие значения, иногда называются функциями. Например, предположим, что процедура GetCustID только упоминание возвращает значение, указывающее, удалось ли найти порядок. В следующем вызове первый параметр является выходным параметром, используемым для получения возвращаемого значения процедуры, второй параметр является входным параметром, используемым для указания идентификатора заказа, а третий — выходной параметр, используемый для получения идентификатора клиента:
{? = call GetCustID(?, ?)}
Драйверы обрабатывают значения входных и выходных параметров в процедурах, отличных от входных параметров в других инструкциях SQL. При выполнении инструкции они извлекают значения переменных, привязанных к этим параметрам, и отправляют их в источник данных.
После выполнения инструкции драйверы хранят возвращаемые значения входных и выходных параметров в переменных, привязанных к этим параметрам. Эти возвращаемые значения не гарантируются, пока все результаты, возвращенные процедурой, не будут возвращены, и SQLMoreResults вернул SQL_NO_DATA. Если выполнение инструкции приводит к ошибке, содержимое буфера входных и выходных параметров или буфера выходных параметров не определено.
Приложение вызывает SQLProcedure , чтобы определить, имеет ли процедура возвращаемое значение. Он вызывает SQLProcedureColumns , чтобы определить тип (возвращаемое значение, входные и выходные данные или выходные данные) каждого параметра процедуры.