Вы можете использовать Параметры Ввода/Вывода для обмена информационными потоками между Visual FoxPro и SQL Server. Параметры Ввода/Вывода допускаются только при выполнении функций "Сквозных Запросов" SQL pass-through; они не могут быть использованы в Представлениях SQL (View).
В следующей далее таблице представлены возможные варианты использования параметров Ввода/Вывода при передаче их Значений из системы Visual FoxPro во внешнюю систему SQL Server (в Хранимые Процедуры) Stored Procedures, которые возвращают результирующие Значения обратно, в Visual FoxPro.
Программный Код | Комментарииs |
---|---|
|
Создается хранимая процедура, с именем: Sp_Test, которая перемножает два передаваемых Параметра ( |
|
Создание системное переменной Visual FoxPro, в которую помещаются результаты выполнения текущих опраторов SQL Server, которые возвращают значения в Visual FoxPro. |
|
Выполнение хранимой поцедуры SQL Server, передача параметров-констант '2' и '4', и получения результата перемножения переданных параметров в Результирующий параметр. |
|
Отображение результирующего Значения. |
Определение Требуемых Параметров
Рекомендуется использовать следующий Синтаксис Результирующих Параметров:
![]() |
|
---|---|
?@parameter_name |
В случае необходимости использования параметров Ввода/Вывода, определите сначала некоторые переменные Visual FoxPro, которые в дальнейшем будут включены в соответствующие операторы SQL pass-through, а только после этого их (переменные) используйте для выполнения актуальных операторов (функций) Запросов. Чтобы успешно посылать и получать требуемую информацию при использовании параметров Ввода/Вывода, вам необходимо выполнить следующее:
-
Определите параметр Хранимой Процедуры в соответствие с Типом получаемых Значений.
Например, если вы определяете параметр хранимой процедуры как:
@result
, вы должны назначить требуемый Тип результирующего параметра, как =int
, для@result
, и только после этого записывать в данный параметр результирующее Значение,@result
= 10. -
В качестве результирующих параметров (@parameter_name) необходимо указывать только уже существующие переменные Visual FoxPro.
Например, если в качестве результирующего параметра указано:
?@outParam
, в вашем приложении уже должна существовать переменная (определена) Visual FoxProoutParam
.Обратите Внимание
Если вы не используете Результирующий параметр, как в системе Visual FoxPro так и в хранимой процедуре, или вы не определяете специальную переменную для получения результирующих Значений в Visual FoxPro, то последний не изменяет значение передаваемого параметра в хранимую процедуру (???).
Конвертация типов Данных
Visual FoxPro выполняет конвертацию возвращаемых Значений рассматриваемых Параметров по следующим Правилам:
-
Плавающая точка в Типах (N, F, B) - конвертируется в тип (N).
-
Размер отображения указанных числовых типов данных устанавливается = 20.
-
Позиция десятичной точки устанавливается текущими системными Установками. Это касается только оекущего Отображения полученного Числа (Default Display Format), но не относится к точности представления числа.
-
Данные типя Время (Date / Time), переменные (D, T) конвертируются в общий формат (T) - Time (Время).
Вы не можете использовать переменные типа Memo, General, Picture, NULL в качестве параметров Вводв/Вывода операторов SQL.
Если в ваших Приложениях в качестве рассматриваемых Параметров (SQL) используются конкретные Поля Курсоров, Visual FoxPro выполняет попытки обратной конвертации получаемых Результатов в соответствующий тип Данных (в полях Курсоров).
Возвращаемые Значения Параметров
Параметры Ввода/Вывода становятся доступными только после завершения получения Последнего Результирующего Набора последнего Запроса SQL. Это означает следующее: система Visual FoxPro возвращает Значения параметров Ввода/Вывода Только После:
-
SQLEXEC( ) возвращает значение (=1) в режиме пакетного выполнения (Batch Mode)
-или-
-
SQLMORERESULTS( ) возвращает значение (=2) при Непакетном Режиме (non-batch mode).
Если предполагается, что при выполнении функции SQLEXEC( ) оператор SQL должен вернуть несколько результирующих наборов, то гарантировано возвращаются Выходные параметры только после получения Последнего Набора Данных (SQL) .
См. также
Задачи
Как: Создавать Параметризованные Запросы SQLКак: Получать Результаты нескольких Результирующих Наборов Запросов (SQL)
Другие ссылки
Использование Технологии SQL Pass-Through (Сквозных Запросов)Расширение вашего Приложения при использовании Технологии SQL Pass-Through
Планирование разработки Приложений типа Client/Server (Клиент-Сервер)
Масштабирование Баз Данных Visual FoxPro
Создание Представлений (View)