:: Главная :: Решения :: Статьи :: Проект "Русский help" :: Файловый архив :: Фотоальбом :: Ссылки ::
   Л и с о в о д ы   в с е х   с т р а н,  о б ъ е д и н я й т е с ь !!!  


Форумы  :: FAQ FoxPro

Как передать параметры в хранимую процедуру сервера
Дата: 24.02.06 19:44:41 ОтветитьЦитировать

Вопрос

В пользовательской форме были сформированы некоторые значения. Как передать эти сформированные значения в качестве параметров в хранимую процедуру сервера?

Ответ

Для передачи значения как параметра в синтаксисе FoxPro используется вопросительный знак.

LOCAL lnPar1, lcPar2
lnPar1 = 123.456
lcPar2 = "Новое значение"
SQLExec(lnHandle,"{Call MyProc (?m.lnPar1, ?m.lnPar2)}")

Все то, что следует за символом вопросительного знака до первого пробела или запятой - это параметр. Конвертация в тип, понятный SQL-серверу произойдет автоматически. Никаких дополнительных преобразований делать не надо.

В качестве параметра можно использовать не только переменные памяти, но и поля таблицы и объекты формы.

Обратите внимание на тот факт, что конвертация в тип, понятный SQL-серверу произойдет автоматически. Однако следует иметь в виду, что при определенных условиях подобной автоматизм может вызвать некоторые проблемы.

Например, для MS SQL сервера переменные памяти с дробной частью будут сконвертировны в тип REAL, что может привести к потере точности. Вместо точного значения 1.1 сервер интерпретирует это значение, как приближенное 1.0999999. В большинстве случаев - ничего страшного. Однако иногда это может иметь принципиальное значение.

Поэтому, если Вам необходимо передать данные "как есть", то придется самостоятельно формировать символьную строку.

LOCAL lnPar1, lcPar2, lcStringSQL
lnPar1 = 123.456
lcPar2 = "Новое значение"
lcStringSQL = "{Call MyProc ("+TRANSFORM(m.lnPar1)+",'"+m.lcPar2+"')}"
SQLExec(lnHandle,m.lcStringSQL)

Замечание

Если Вы формируете символьную строку самостоятельно, то предварительно уточните как именно записываются константы разных типов в синтаксисе того или иного сервера.

Например, для MS SQL сервера символьная константа, по умолчанию, обрамляется одинарными кавычками. Двойными кавычками обрамляются имена объектов. Поэтому символьная константа обрамленная двойными кавычками может вызвать сообщение о синтаксической ошибке.

Константа типа Date или DateTime также может записываться разными способами. Хотя, универсальный формат, который понимают большинство серверов - это символьная строка вида 'ГГГГММДД'. Т.е. дата 6 января 2010 года должна быть записана как '20100106'



Исправлено 1 раз(а). Последнее : Владимир Максимов, 06.01.10 15:46
Ratings: 0 negative/0 positive


Тема Просмотров Написано Написано
  Работа с удаленными данными, SQL-серверами 5833 Владимир Максимов 24.02.06 18:19
  Как определить причину ошибки 7111 Владимир Максимов 24.02.06 18:42
  Как подавить выдачу системного окна настройки соединения в случае ошибки 6640 Владимир Максимов 24.02.06 19:13
  Как вызвать хранимую процедуру сервера 6655 Владимир Максимов 24.02.06 19:33
  Как передать параметры в хранимую процедуру сервера 7168 Владимир Максимов 24.02.06 19:44
  Как получить значение выходного параметра процедуры сервера 6865 Владимир Максимов 24.02.06 19:57
  Как получить значение функции сервера 5962 Владимир Максимов 24.02.06 20:11
  Почему возвращается только часть числа. Первые символы 5390 Владимир Максимов 06.01.10 16:39


Извините, но у вас нет прав для того, чтобы оставлять сообщения в этом форуме.

On-line: 2 (Гостей: 2)

© 2006 Fox Club 
Яндекс.Метрика