Работа с массивами в хранимых процедурах

Работа с массивами в хранимых процедурах

Массивы, как было сказано в главе "Типы данных", позволяют хранить в одном поле набор данных какого-нибудь одного элементарного типа. Однако "простым" SQL-запросом данные не извлечь и не изменить. Необходим особый подход для работы с массивами InteiBase в клиентских приложениях - см paздел "Поддержка array-полей в FIBPIus" в главе (ч 2) и "Разработка клиентских приложений СУБД InterBase с использованием технологии Microsoft OLE DB" (ч. 3). К тому же не все библиотеки доступа поддерживают работу с массивами.

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

CREATE TABLE table_array(

ID_table INTEGER,

Arrayl INTEGER[3,2]);

Теперь можно продемонстрировать, как можно просмотреть данные из этого массива. Для этого внутри хранимой процедуры применяется конструкция вида

SELECT Arrayl[:i, :j] FROM table_array INTO :ElemValue;

Давайте оформим механизм доступа к массиву в виде следующей хранимой процедуры:

CREATE PROCEDURE SelectFromArr(ID_row INTEGER,

x INTEGER, у INTEGER, vl integer)

Returns (ElemValue INTEGER)

AS

BEGIN

SELECT arrayl[:x,:y]

FROM table_array

WHERE id_cable=:ID_row

INTO :ElemValue;

SUSPEND;

END

Как видите, текст ХП очевиден - просто извлекаем нужные значения из элемента массива с заданными индексами х и у в строке таблицы table_array с идентификатором ID_table=ID_row. К сожалению, такой синтаксис доступа к элементам массива доступен только внутри хранимых процедур и только для чтения. Для заполнения массива придется воспользоваться программой, применяющей либо InterBase API, либо библиотеки доступа, поддерживающие работу с массивами InterBase - FIBPIus для Delphi/C-H-Builder/Kylix или IBProvider для продуктов Microsoft.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

Функции для работы с массивами

Из книги автора

Функции для работы с массивами В табл. П2.17 приведены функции, с помощью которых можно создавать новые массивы и получать сведения об уже имеющихся.Таблица П2.17. Функции для работы с массивами Функция Описание  Array(arglist)  Возвращает значение типа Variant, которое является


Работа с массивами данных

Из книги автора

Работа с массивами данных Язык PHP предоставляет множество функций для работы с массивами данных. Как правило, эти функции решают наиболее часто встречающиеся задачи, связанные с обработкой массивов. В этой лекции мы рассмотрим некоторые из таких функций и с их помощью


Работа с массивами

Из книги автора

Работа с массивами ВведениеЭти функции позволят вам различными способами оперировать с массивами. Массивы идеально подходят для хранения, изменения и работы с наборами переменных.Поддерживаются одно- и многоразмерные массивы, как созданные пользователем, так и


Работа с несколькими массивами

Из книги автора

Работа с несколькими массивами array_diffОпределение исключительного пересечения массивов.Синтаксис:array array_diff(array arr1, array arr2 [, array ...])Данная функция возвращает массив, который содержит значения, имеющиеся только в массиве arr1 ( и не имеющиеся в любых других). При этом индексы


Разделители в хранимых процедурах

Из книги автора

Разделители в хранимых процедурах Обратите внимание, что оператор внутри процедуры заканчивается точкой с запятой (;). Как известно, точка с запятой является стандартным разделителем команд в SQL - она является сигналом интерпретатору SQL, что текст команды введен полностью


Работа с массивами

Из книги автора

Работа с массивами Встроенная поддержка массивов является одним из основных пунктов списка достоинств InterBase как SQL сервера баз данных. И одновременно массивы возглавляют список его невостребованных возможностей. В практике сильная потребность в использовании массивов


Знакомство с массивами

Из книги автора

Знакомство с массивами Предположим, у вас есть набор чисел, представляющих цены, оценки за экзамен, расстояния от Земли до каких-то астрономических объектов или нечто другое. Представьте себе, что вы печатаете этот набор чисел в виде списка на листе бумаги, каждое число - в


Работа с многомерными массивами

Из книги автора

Работа с многомерными массивами Вдобавок к одномерным массивам, которые мы рассматривали до сих пор, в C# поддерживаются два варианта многомерных массивов. Первый из них – это прямоугольный массив, т.е. многомерный массив, в котором каждая строка оказывается одной и той


5.2. Синтаксис хранимых процедур

Из книги автора

5.2. Синтаксис хранимых процедур Сохраненная подпрограмма является процедурой или функцией. Сохраненные подпрограммы созданы командами CREATE PROCEDURE и CREATE FUNCTION. Процедура вызывается, используя инструкцию CALL, и может только передавать обратные значения, используя переменные


ИСПОЛЬЗОВАНИЕ УКАЗАТЕЛЕЙ ПРИ РАБОТЕ С МАССИВАМИ

Из книги автора

ИСПОЛЬЗОВАНИЕ УКАЗАТЕЛЕЙ ПРИ РАБОТЕ С МАССИВАМИ      Попробуем написать функцию, использующую массивы, а затем перепишем ее, применяя указатели.      Рассмотрим простую функцию, которая находит (или пытается найти) среднее значение массива целых чисел. На входе функции


Абстракция хранимых данных

Из книги автора

Абстракция хранимых данных Даже в современных системах клиент-сервер можно найти слишком много плохо выполняющихся, подверженных ошибкам приложений, которые были "спроектированы" с использованием отчетов и электронных таблиц в качестве основы для проектирования базы


Создание хранимых процедур

Из книги автора

Создание хранимых процедур В вашем скрипте или в isql начните с установки символа терминатора, который будет использован для отметки конца синтаксиса CREATE PROCEDURE. Следующий пример устанавливает символ терминатора в &:SET TERM &;Синтаксис оператора:CREATE PROCEDURE


Операции в выполняемых процедурах

Из книги автора

Операции в выполняемых процедурах Практически любое манипулирование данными в SQL доступно в выполняемой хранимой процедуре. Все действия выполняются в контексте транзакции вызвавшей процедуру программы и подтверждаются, когда подтверждается эта транзакция. Для строк,


Удаление хранимых процедур

Из книги автора

Удаление хранимых процедур Оператор DROP PROCEDURE удаляет существующую хранимую процедуру из базы данных. Вы можете использовать этот оператор везде, где можно использовать операторы DDL.! ! !ПРИМЕЧАНИЕ. Операторы DDL не могут выполняться как операторы PSQL. При этом в Firebird 1.5


Подпрограммы для работы с динамическими массивами

Из книги автора

Подпрограммы для работы с динамическими массивами function Length(a: System.Array): integer; Возвращает длину динамического массива function Length(a: System.Array; m: integer): integer; Возвращает длину m-той размерности динамического массива (размерности нумеруются с нуля) procedure SetLength(var a: System.Array;