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


Форумы  :: FAQ FoxPro

Как передать параметры в хранимую процедуру сервера
Дата: 24.02.06 18: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'



Исправлено: Владимир Максимов, 06.01.10 14:46
Ratings: 0 negative/0 positive


Тема Просмотров Написано Написано
  Работа с удаленными данными, SQL-серверами 5257 Владимир Максимов 24.02.06 17:19
  Как определить причину ошибки 6500 Владимир Максимов 24.02.06 17:42
  Как подавить выдачу системного окна настройки соединения в случае ошибки 5913 Владимир Максимов 24.02.06 18:13
  Как вызвать хранимую процедуру сервера 6082 Владимир Максимов 24.02.06 18:33
  Как передать параметры в хранимую процедуру сервера 6435 Владимир Максимов 24.02.06 18:44
  Как получить значение выходного параметра процедуры сервера 6197 Владимир Максимов 24.02.06 18:57
  Как получить значение функции сервера 5342 Владимир Максимов 24.02.06 19:11
  Почему возвращается только часть числа. Первые символы 4256 Владимир Максимов 06.01.10 15:39


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

On-line: 38 and Guests: 38


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