Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MB6REFRU.pdf
Скачиваний:
10
Добавлен:
13.02.2015
Размер:
3.83 Mб
Скачать

Функция Server_EOT( )

Функция Server_EOT( )

Назначение:

Определяет, был ли достигнут конец результирующего набора в процессе последовательной выборки записей, выполнявшейся оператором Server Fetch.

Синтаксис:

Server_EOT (StatementNumber)

StatementNumber – целое значение, номер SQLLоператора.

Возвращаемое значение:

Логическое.

Описание:

Функция Server_EOT() возвращает TRUE, если предыдущий оператор выборки не нашел в результирующем наборе данных для возврата; в противном случае возвращает FALSE. Значение TRUE возвращается как при попытке выбрать предыдущую запись сразу же после выборки первой записи набора, так и в случае выборки следующей записи после последней записи набора.

Пример:

Dim hdbc, hstmt As Integer

hdbc = Server_Connect(”QELIB”, ”DSN=ORACLE7;DLG=1”) hstmt = Server_Execute(hdbc, ”Select * from ADDR”) Server hstmt Fetch FIRST

While Not Server_EOT(hstmt)

’ Обработка каждой строки данных ...

Server hstmt Fetch Next Wend

Смотрите также:

Server Fetch

468

Справочник MapBasic

Функция Server_Execute( )

Функция Server_Execute( )

Назначение:

Посылает SQLLстроку для исполнения на удаленный сервер данных.

Синтаксис:

Server_Execute(ConnectionNumber, server_string)

ConnectionNumber – номер соединения с сервером данных.

server_string – строка, представляющая любой корректный SQLLоператор, поддерживаемый сервером, с которым установлено соединение.

Возвращаемое значение:

Целое.

Описание:

Функция Server_Execute пересылает SQLLстроку, заданную параметром server_string и представляющую SQLLоператор, через соединение с сервером, указанное параметром Connec tionNumber. Любой корректный SQLLоператор, поддерживаемый активным сервером, является допустимым значением параметра server_string. Информацию о корректных SQLLоператорах смотрите в руководстве по языку SQL для СУБД на Вашем сервере.

Эта функция возвращает номерLуказатель (handle) оператора, используемый для ассоциации (через параметр StatementNumber) последующих SQLLобращений (таких как Fetch и Close) с конкретным SQLLоператором.

Вы должны обеспечить выполнение оператора Server Close для каждого вызова функции Server_Execute() как можно быстрее по завершении использования указателя SQLLоператора. Для операторов типа Select – после выборки требуемых данных. При этом на удаленном сервере данных будет закрыт курсор и освобожден результирующий набор. В противном случае Вы можете превысить лимит на число открытых курсоров, и дальнейшие обращения к базе данных исполняться не будут. Не все серверы баз данных поддерживают курсоры с прямой и обратной прокруткой. Для других SQLLоператоров выдайте оператор Server Close сразу же после вызова функции Server_Execute.

Dim hdbc, hstmt As Integer

hdbc = Server_Connect(”QELIB”, ”DSN=ORACLE7;DLG=1”) hstmt = Server_Execute(hdbc, ”Select * from ADDR”) Server hstmt Close

Пример:

Dim hdbc, hstmt As Integer

hdbc = Server_Connect(”QELIB”, DSN=ORACLE7;DLG=1”)

hstmt = Server_Execute(hdbc, ”CREATE TABLE NAME_TABLE (NAME CHAR (20))”)

Server hstmt Close

hstmt = Server_Execute(hdbc, ”INSERT INTO NAME_TABLE VALUES (‘Steve’)”) Server Close hstmt

hstmt = Server_Execute(hdbc, ”UPDATE NAME_TABLE SET name = ‘Tim’”) Server Close hstmt

Server hdbc Disconnect

Смотрите также:

Server Close, Server Fetch

Справочник MapBasic

469

Оператор Server Fetch

Оператор Server Fetch

Назначение:

Осуществляет выборку записей результирующего набора с удаленного сервера данных.

Синтаксис:

Server StatementNumber Fetch [NEXT|PREV|FIRST|LAST|[REC]recno] или

Server StatementNumber Fetch INTO Table [FILE path]

StatementNumber – целое значение, номер SQLLоператора.

Описание:

Оператор Server Fetch извлекает записи результирующего набора (заданного значением State mentNumber SQLLоператора, создавшего набор) из сервера данных. Для построчной выборки данных они помещаются в локальную область хранения, и могут быть связаны с переменными посредством команд Server Bind Column. Для выборки данных по столбцам применяется функL ция Server_ColumnInfo(SRV_COL_INFO_VALUE). Можно также в одной операции выбрать полный результирующий набор в таблицу MapInfo, используя предложение INTO Table.

Выполнение операторов Server Fetch и Server Fetch Into прерывается с установкой кода ошибки ERR() = ERR_SRV_ESC при нажатии пользователем клавиши ESC, что позволяет Вашему MapBasicLприложению использовать команды Server Fetch для обработки этого собыL тия.

По исполнении оператора Server Fetch Into таблица MapInfo фиксируется, и для нее нет незавершенных транзакций. Все символьные поля, превышающие 254 байта, усекаются; все двоичные (неструктурированные) поля загружаются в таблицу как шестнадцатиричные симL вольные строки двойной длины. Имена столбцов в загруженной таблице будут использовать псевдонимы столбцов, если в запросе задавались псевдонимы.

Обработка NullUзначений

Если был исполнен SQLLоператор Select с последующей выборкой записи, включающей столL бец таблицы, который содержит пустое (null) значение, то происходит следующее. Поскольку в MapInfo не поддерживается концепция пустых значений в таблице или переменной, используL ется значение по умолчанию в рамках домена для соответствующего типа данных – значение MapBasicLпеременной, декларированной в инструкции Dim, но не инициализированной. Однако при этом обеспечивается индикация возврата пустого значения.

Для связанных переменных (см. оператор Server Bind Column) могут быть заданы переменные состояния, значения которых будут указывать на возврат пустого значения при выборке. Для столбцов, не связанных с переменными, функция Server_ColumnInfo() с атрибутом SRV_COL_INFO_STATUS будет возвращать статус столбца, информирующий о возможно пустом значении.

Как MapInfo интерпретирует типы данных?

Смотрите в Приложении 4 Руководства пользователя MapBasic информацию о том, как MapInfo интерпретирует типы данных.

470

Справочник MapBasic

Оператор Server Fetch

Ошибки:

Оператор Server n Fetch Into Table будет генерировать ошибку для любых неудачных попыток вставки записей в локальную таблицу MapInfo. Операторы типа Server n Fetch [Next|Prev|recno] генерируют ошибки, если запрашиваемой записи нет в наличии.

Примеры:

Пример выборки в таблицу MapInfo Dim hdbc, hstmt As Integer

hdbc = Server_Connect(”QELIB”, ”DSN=ORACLE7;DLG=1”) hstmt = Server_Execute(hdbc, ”Select * from emp”) Server hstmt Fetch Into ”MyEmp”

Server hstmt Close

Пример выборки с использованием связанных переменных Dim hdbc, hstmt As Integer

dim NameVar, AddrVar as String

dim NameStatus, AddrStatus as Integer

hdbc = Server_Connect(”QELIB”, ”DSN=ORACLE7;DLG=1”)

hstmt = Server_Execute(hdbc, ”Select Name, Addr from emp”) Server hstmt Bind Column 1 to NameVar, NameStatus

Server hstmt Bind Column 2 to AddrVar, AddrStatus Server hstmt Fetch Next

While Not Server_Eot(hstmt)

Print ”Name = ” + NameVar + ”; Address = ” + AddrVar Server hstmt Fetch Next

Wend

Смотрите также:

Server_ColumnInfo()

Справочник MapBasic

471

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]