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

Оператор Server Fetch

Оператор Server Fetch

Назначение:

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

Синтаксис:

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

Server StatementNumber Fetch INTO Table [FILE path]

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

Описание:

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

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

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

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

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

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

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

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

Справочник MapBasic

505

Оператор 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()

506

Справочник MapBasic

Функция Server_GetodbcHConn( )

Функция Server_GetodbcHConn( )

Назначение:

Возвращает целое значение, содержащее указатель связи ODBC, ассоциированной со связью с сервером данных.

Синтаксис:

Server_GetodbcHConn (ConnectionNumber)

ConnectionNumber - целое значение возвращаемое функцией Server_Connect, которая определяет номер соединения с сервером данных.

Описание:

Эта функция возвращает целое значение, содержащее указатель связи ODBC, ассоциированной со связью с сервером данных. Это позволяет Вам любую функцию в ODBC DLL, чтобы расширить функциональные возможности, посредством использования MapBasic операторов типа Server.

Пример:

’* Нахождение связи с сервером данных

DECLARE FUNCTION SQLGetInfo LIB ”ODBC32.DLL” (BYVAL odbchdbc AS INTE GER, BYVAL infoflag AS INTEGER, val AS STRING, BYVAL len AS INTEGER, outlen AS INTEGER) AS INTEGER

Dim rc, outlen, hdbc, odbchdbc AS INTEGER

Dim DBName AS STRING

’ Связь с сервером данных

hdbc

=

Server_Connect(”QELIB”, ”DLG=1”)

odbchdbc

 

= Server_GetodbcHConn(hdbc) ’ получение указателя связи ODBC

’ Получение имени базы

данных из ODBC

DBName

=

STRING$(33,

”0”) ’ Инициализация выходного буфера

rc = SQLGetInfo(odbchdbc, 17 , DBName, 40, outlen) ’ получение имени базы данных ODBC

’ Отображение результатов (имя базы данных) if rc <> 0 THEN

Note ”SQLGetInfo Error rc=” + rc + ”, outlen=” + outlen else

Note ”Connected to Database: ” + DBName end if

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

Server_GetodbcHStmt()

Справочник MapBasic

507

Функция Server_GetodbcHStmt( )

Функция Server_GetodbcHStmt( )

Назначение:

Возвращает указатель оператора ODBC, ассоциированный с MapBasic-оператором типа Server.

Синтаксис:

Server_GetodbcHStmt(StatementNumber)

StatementNumber - целое значение, возвращаемое функцией Server_Execute(), которое указывает на результирующий набор исполненного SQL-оператора.

Описание:

Эта функция возвращает указатель оператора ODBC, ассоциированный с MapBasic-оператором типа Server. Это позволяет Вам вызывать любую функцию ODBC, для расширения функциональных возможностей посредством использования MapBasic-операторов типа Server.

Пример:

Нахождение номеров строк, которые будут обновляться Dim rc, outlen, hdbc, hstmt, odbchstmt AS INTEGER

Dim RowsUpdated AS INTEGER

Нахождение номеров строк, подлежащих обновлению

DECLARE FUNCTION SQLRowCount LIB ”ODBC32.DLL” (BYVAL odbchstmt AS INTE GER, rowcnt AS INTEGER) AS INTEGER

hdbc = Server_Connect(”QELIB”, ”DLG=1”)

hstmt = Server_Execute(hdbc, ”UPDATE TIML.CUSTOMER SET STATE=’NY’ WHERE STATE=’NY’”)

odbchstmt = Server_GetodbcHStmt(hstmt) rc = SQLRowCount(odbchstmt, RowsUpdated)

Note ”Updated ” + RowsUpdated + ” New customers to Tier 1”

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

Server_GetodbcHConn( )

508

Справочник MapBasic

Оператор Server Link Table

Оператор Server Link Table

Назначение:

Создает связанную таблицу. Здесь приводится синтаксис для версии 4.1, который позволяет создавать связанную таблицу, используя существующую связь с базой данных.

Синтаксис1:

Server Link Table

SQLQuery

Using ConnectionString Into TableName

[ File FileSpec]

[ ReadOnly ]

Синтаксис2:

Server ConnectionNumber Link Table SQLQuery

Into TableName

[ File FileSpec]

[ ReadOnly ]

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

SQLQuery – SQL-оператор запроса (на активном диалекте с добавлением объектных ключевых слов), который генерирует результирующий набор. Таблица MapInfo связывается именно с этим результирующим набором.

ConnectionString – строка, используемая для подключения к серверу базы данных (см. описание функции Server Connect).

TableName – псевдоним создаваемой таблицы MapInfo.

FileSpec – имя табличного файла. Если этот параметр отсутствует, имя файла генерируется в текущем каталоге диска на базе псевдонима таблицы. Если параметр FileSpec задан, а табличный файл с указанным именем уже существует, то генерируется ошибка.

ReadOnly – задает использование таблицы только для чтения.

Описание:

Этот оператор создает связанную таблицу MapInfo на диске. Эта таблица открывается и к ней обращается запрос. Связанная таблица обрабатывается как обычная таблица MapInfo в большинстве случаев, кроме следующих:

оператор Alter Table не выполняется для связанных таблиц;

связанные таблицы не могут быть упакованы;

в список диалога “Упаковка” эти таблицы не включаются.

Синтаксис Server Link Table используется для установки связи сервера базы данных и связанной таблицы. Server ConnectionNumber Link Table используются для связи таблицы с подключенным сервером базы данных.

Связанные таблицы содержат информацию для переустановки связи с удаленным сервером и идентификации удаленных данных, которые обновляются. Эта информация хранится в виде метаданных в TAB-файле.

Справочник MapBasic

509

Оператор Server Link Table

Отсутствие ключевого слова ReadOnly не означает возможности редактирования таблицы. Связанная таблица может быть запрещена для записи при следующих обстоятельствах:

1) результирующий набор разрешен только для чтения; 2) результирующий набор не содержит первичного ключа; 3) в результирующем наборе отсутствуют редактируемые столбцы; 4) указан режим ReadOnly.

Примеры:

Declare Sub Main

Sub Main

Open table ”C:\mapinfo\data\states.tab”

Server Link Table ”Select * from Statecap” Using ”DSN=MS Access;DBQ=C:\MSOFFICE\ACCESS\DB1.mdb” Into test File ”C:\tmp\test” Map From Test,States

End Sub ’Main

Declare Sub Main Sub Main

Dim ConnNum As Integer

ConnNum = Server_Connect(”qelib”,”DSN=SQS;PWD=sysmal;SRVR=seneca”) Server ConnNum Link Table

”Select * from CITY_1” Into temp

Map From temp

Server ConnNum Disconnect End Sub

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

Unlink, Drop Table, Save File, Commit Table, Rollback Table, Close Table, Server Refresh

510

Справочник MapBasic

Функция Server_NumCols( )

Функция Server_NumCols( )

Назначение:

Возвращает число столбцов в результирующем наборе.

Синтаксис:

Server_NumCols(StatementNumber)

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

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

Целое.

Описание:

Функция Server_NumCols() возвращает число столбцов в результирующем наборе, ссылка на который осуществляется по указателю StatementNumber.

Пример:

Dim hdbc, hstmt As Integer

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

hstmt = Server_Execute(hdbc, ”Select Name, Addr from emp”) Print ”Number of columns = ” + Server_NumCols(hstmt)

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

Server_ColumnInfo()

Справочник MapBasic

511

Функция Server_NumDrivers( )

Функция Server_NumDrivers( )

Назначение:

Возвращает число интерфейсных модулей удаленного доступа к базам данных, установленных в данный момент для доступа из MapInfo.

Синтаксис:

Server_NumDrivers()

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

Целое.

Описание:

Функция Server_NumDrivers() возвращает число модулей интерфейса удаленного доступа, через которые может осуществляться соединение с удаленным сервером данных, установленных для использования приложением MapInfo.

Пример:

Print ”Всего драйверов = ” + Server_NumDrivers()

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

Server_DriverInfo()

512

Справочник MapBasic

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