Параметры представляют собой переменные SQL, размещенные в программе. Параметры можно передавать операторам SQL во время выполнения приложения, что придает этим операторам дополнительную гибкость. Практически все 1лавные реализации SQL допускают использование параметров. Мы рассмотрим примеры передачи параметров в Oracle и Sybase.
Oracle
В Oracle предусмотрена передача параметров операторам, которые в противном случае оставались бы статическими операторами SQL.
SELECT EMP_ID, LAST_NAME, FIRST_NAME
FROM EMPLOYEEJTBL
WHERE EMP_ID = '&EMP__ID'
Этот оператор возвратит данные столбцов EMP_ID, LAST_NAME, FIRST_NAME таблицы EMPLOYEE_TBL для служащего с любым табельным номером EMP_ID, который вас попросит этот оператор ввести.
SELECT *
FROM EMPLOYEE_TBL
WHERE CITY = '&CITY'
AND STATE = '&STATE'
Этот оператор спросит у вас названия города и штата. В результате выполнения запроса к базе данных оператор возвратит данные обо всех служащих, проживающих в указанных вами городе и штате.
Sybase
В Sybase параметры можно передать сохраненной ранее процедуре
CREATE PROC EMP_SEARCK
(@EMP_ID)
AS
SELECT LAST_NAME, FIRST_NAME
FROM EMPLOYEE_TBL
WHERE EMP_ID = @EMP__ID
Чтобы выполнить созданную здесь процедуру с передачей ей подходящич параметров, вам придется напечатать что-то похожее на следующий оператор SP_EMP_SEARCH "443679012"
Резюме
В ходе этого урока мы обсудили расширения стандартного SQL, предлагаемые рядом производителей систем управления базами данных и их соответствие стандарту ANSI. После того, как вы изучили SQL, применение ваших знаний и вашего программного кода в рамках других реализаций языка окажется для вас достаточно простым делом. SQL обладает хорошей переносимостью от системы к системе и для адаптации программного кода потребуется при этом не слишком много усилии.
В конце этого урока были рассмотрены два конкретных расширения SQL использующиеся тремя системами управления базами данных. Transact-SQL используется Microsoft SQL Server и Sybase, a PL/SQL используется Oracle Принципы, заложенные в основу этих расширений SQL, оказываются достаточно схожими. Например, оба ли расширения имеют стандартные возможности и усовершенствования, позволяющие повысить общую функциональность языка и эффективность работы В главе обсуждался продукт MySQL, специально предназначенный для ускорения работы с очень большими базами данных. Цель этого урока - показать, что расширений SQL существует немало и что одним из важнейших требований ко всем реализациям языка оказывается соответствие стандарту ANSI SQL.
Применив информацию из этой книги к своим конкретным задачам (т. е создав программный код, отладив его и заставив выполнять конкретную работу), вы вступите на путь практического освоения SQL. Компании имеют дело с массой данных, и поэтому не могут обойтись без баз данных. Реляционные базы данных имеются повсюду, а поскольку стандартным языком общения с реляционными базами данных и управления ими является SQL, то ваше решение освоить этот язык, безусловно, было решением правильным. Удачи вам!
Вопросы и ответы
Почему существуют различные вариации SQL?
Вариации SQL существуют потому, что различные производители по-разному решают проблемы представления и хранения данных, из-за амбициозного стремления каждого производителя получить преимущество по сравнению с другими, а также из-за постоянно возникающих новых идей.
После изучения основ SQL получаю ли я возможность использовать SQL в различных системах управления базами данных?
Да. Однако не забывайте о том, все реализации имеют свои особенности и поэтому в чем-то отличаются одна от другой. Общими для всех реализаций остаются как раз основные конструкции SQL.
Практикум
Задания практических занятий разделены на тесты и упражнения. Тесты предназначены для проверки общего уровня понимания рассмотренного материала. Упражнения дают возможность применить на практике идеи, обсуждавшиеся в ходе текущего урока, в комбинации с идеями из предыдущих уроков. Мы рекомендуем ответить на тестовые вопросы и выполнить упражнения прежде, чем продолжать дальнейшее чтение книги. Ответы можно проверить по Приложению Б, "Ответы".
Тесты
1. Каким языком является SQL - процедурным или непроцедурным?
2. Почему существуют различия между разными реализациями SQL?
3. Назовите три основные операции, которые выполняются с курсором после его объявления.
4. При использовании какого (процедурного или непроцедурного) языка обращения к базе данных ядро базы данных само принимает решение о том, как обрабатывать и выполнять операторы SQL?
Упражнения
1. Попробуйте самостоятельно обнаружить различия между реализациями SQL разных производителей. В библиотеке или книжном магазине ознакомьтесь с книгами по соответствующим реализациям языка. Сравните синтаксис соответствующих операторов SQL, в частности, операторов DML (языка манипуляций данными). Сравните формы операторов INSERT, DELETE и UPDATE. При этом для сравнения можно заглянуть также и в книгу по ANSI SQL.
2. Используя таблицу EMPLOYEEJTBL (см. Приложение В, "Операторы CREATE TABLE для примеров книги"), запишите интерактивный оператор SQL, возвращающий имена всех служащих, имеющих ZIP-код, равный 46234.