При объединении
операторов SQL с базовым языком программирования должны соблюдаться следующие
принципы:
Операторы SQL включаются
непосредственно в текст программы на исходном языке программирования. Исходная
программа поступает на вход препроцессора SQL, который компилирует операторы
SQL.
Встроенные операторы
SQL могут ссылаться на переменные базового языка программирования.
Встроенные операторы
SQL получают результаты SQL-запросов с помощью переменных базового языка программирования.
Для присвоения неопределенных
значений (NULL) атрибутам отношений БД используются специальные функции.
Для обеспечения построчной
обработки результатов запросов во встроенный SQL добавляются несколько новых
операторов, которые отсутствуют в интерактивном SQL.
Операторы
манипулирования данными не требуют изменения для их встраивания в программный
SQL. Однако оператор поиска (SELECT) потребовал изменений.
Стандартный
оператор SELECT возвращает набор данных, релевантный сформированным условиям
запроса. В интерактивном SQL этот полученный набор данных просто выводится на
консоль пользователя и он может просмотреть полученные результаты. Встроенный
оператор SELECT должен создавать структуры данных,
которые согласуются с базовыми языками программирования. Во встроенном SQL запросы
делятся на 2 типа:
Однострочные запросы,
где ожидаемые результаты соответствуют одной строке данных. Эта строка может
содержать значения нескольких столбцов.
Многострочные запросы,
результатом которых является получение целого набора строк. При этом приложение
должно иметь возможность проработать все полученные строки. Значит, должен
существовать механизм, который поддерживает просмотр и обработку полученного
набора строк.
Первый тип
запроса — однострочный запрос во встроенном SQL вызвал модификацию оператора
SQL, которая выглядит следующим образом:
Мы видим,
что во встроенный SELECT добавился новый для нас раздел, содержащий список переменных
базового языка. Именно в эти переменные будет помещен результат однострочного
запроса, поэтому список переменных базового языка должен быть согласован как
по порядку, так и по типу и размеру данных со списком возвращаемых столбцов.
По правилам любого языка программирования все базовые переменные предварительно
описаны в прикладной программе. Например, если в нашей БД «Библиотека»
существует таблица READERS (Читатели), мы можем получить сведения о конкретном
читателе.
CREATE TABLE
READERS
(
READER_ID Small
int(4) PRIMARY KEY,
FIRSTJAME char
(30) NOT NULL,
LAST_NAME char(30)
NOT NULL,
ADRES char(50)
, HOME_PHON char(12) ,
WORK_PHON char
(12) .
BIRTH_DAY date
СНЕCK( DateDiff (year, GetDate(),BIRTH_DAY) >=17 )
);
Для этого
опишем базовые переменные. Рассмотрим пример для MS SQL SERVER 7.0, используя
язык Transact SQL. При описании локальных переменных в языке Transact SQL используется
специальный символ @. Комментарии в Transact SQL заключены в парные символы
/* комментарий */.
В этом простом
примере мы имена переменных сделали такими же, как и имена столбцов таблицы
READERS, но это необязательно. Однако транслятор различает эти объекты, именно
поэтому в диалекте Transact SQL принято локальные переменные предварять специальным
символом @. В примере мы использовали квалифицированные имена полей, имена полей,
предваряемые именем таблицы. В нашем случае это тоже необязательно, потому что
запрос выбирает данные только из одной таблицы.
В нашем примере
базовые переменные играют разную роль. Локальная переменная PREADER_ID является
входной по отношению к запросу. Ей присвоено значение 4, и в запросе это значение
используется для фильтрации данных, поэтому эта переменная используется в условии
WHERE.
Остальные
базовые переменные играют роль выходных переменных, в них СУБД помещает результат
выполнения запроса, помещая в них значения соответствующих полей отношения READERS,
извлеченные из БД.
Знаете ли Вы, что такое "Большой Взрыв"? Согласно рупору релятивистской идеологии Википедии "Большой взрыв (англ. Big Bang) - это космологическая модель, описывающая раннее развитие Вселенной, а именно - начало расширения Вселенной, перед которым Вселенная находилась в сингулярном состоянии. Обычно сейчас автоматически сочетают теорию Большого взрыва и модель горячей Вселенной, но эти концепции независимы и исторически существовало также представление о холодной начальной Вселенной вблизи Большого взрыва. Именно сочетание теории Большого взрыва с теорией горячей Вселенной, подкрепляемое существованием реликтового излучения..." В этой тираде количество нонсенсов (бессмыслиц) больше, чем количество предложений, иначе просто трудно запутать сознание обывателя до такой степени, чтобы он поверил в эту ахинею. На самом деле взорваться что-либо может только в уже имеющемся пространстве. Без этого никакого взрыва в принципе быть не может, так как "взрыв" - понятие, применимое только внутри уже имеющегося пространства. А раз так, то есть, если пространство вселенной уже было до БВ, то БВ не может быть началом Вселенной в принципе. Это во-первых. Во-вторых, Вселенная - это не обычный конечный объект с границами, это сама бесконечность во времени и пространстве. У нее нет начала и конца, а также пространственных границ уже по ее определению: она есть всё (потому и называется Вселенной). В третьих, фраза "представление о холодной начальной Вселенной вблизи Большого взрыва" тоже есть сплошной нонсенс. Что могло быть "вблизи Большого взрыва", если самой Вселенной там еще не было? Подробнее читайте в FAQ по эфирной физике.