РАЗРАБОТКА ПРОСТОГО БЛОКА. Структура простого блока DECLARE BEGIN EXCEPTION END;

Презентация:



Advertisements
Похожие презентации
PL/SQL Программная конструкция ОписаниеСреда выполнения Анонимный блок Неименованный блок PL/SQL, вставленный в приложение или созданный интерактивно.
Advertisements

МОДУЛЬНОЕ ПРОГРАММИРОВАНИЕ. Программная единица PL/SQL Именованные блоки Три основных категории Процедура Функция Пакет Хранятся в базе данных или обрабатываются.
Создание таблиц. А.М. Гудов 2Заключение Имеется несколько способов соединения таблиц: –Эквисоединение –Не-эквисоединение –Внешнее соединение –Соединение.
SQL. Создание базы данных CREATE DATABASE ALTER DATABASE DROP DATABASE.
Основы языка PL/SQL Общие сведения Границы моего языка означают границы моего мира. Людвиг Виттгенштейн.
УПРАВЛЕНИЕ ПОТОКОМ В БЛОКАХ PL/SQL. Управление потоком операций в PL/SQL Логический поток операций можно изменять с помощью управляющих структур: Структуры.
PL/SQL Введение 1. Типы данных Типы доступные SQL (в Oracle) BOOLEAN CHAR NUMBER RECORD TABLE.
Обработка запросов с использованием курсоров. Что такое курсор? Каждая команда SQL, выполняемая на сервере Oracle, имеет свой курсор. Два типа курсоров:
Множества. Множество- ограниченный, неупорядоченный набор различных элементов одного типа. Примеры множеств: Множество арабских цифр. Множество знаков.
Язык программирования PL/SQL1 Язык программирования ORACLE PL/SQL Учебные материалы ИВЦ АИС.
Обработка исключений Гудов А.М., Завозкин С.Ю
PL/SQL Взаимодействие с СУБД. Специальные типы Имя_таблицы.имя_столбца%TYPE Имя_таблицы%ROWTYPE; Имя_курсора%ROWTYPE;
PL/SQL Курсоры в PL/SQL Неявные курсоры создаются PL/SQL неявно для всех команд DML и SELECT. Явные курсоры объявляются программистом, который присваивает.
PL/SQL Курсоры. Курсор – специальный элемент, связанный с SQL-оператором SELECT. Объявление курсора происходит в секции объявления базового блока. Работа.
Динамический SQL (использование в Oracle). Виды предложений SQL МетодТип предложенияТребуемые вызовы пакета DBMS_SQL 1 Незапросные, нет базовых переменных,
Начала программирования Занятие 2. Вывод на экран и ввод с клавиатуры. Цикл со счетчиком.
1 из 18 Основные типы данных языка программирования Паскаль.
PL/SQL Триггер блок PL/SQL, выполняемый неявно каждый раз, когда происходит конкретное событие.
Технология составления алгоритмов и программы для решения линейных задач на языке Паскаль.
Лабораторная работа 1 Элементы языка Турбо Паскаль. Работа в среде Турбо Паскаль на ПЭВМ.
Транксрипт:

РАЗРАБОТКА ПРОСТОГО БЛОКА

Структура простого блока DECLARE BEGIN EXCEPTION END;

Объявление скалярных переменных identifier [CONSTANT] datatype [NOT NULL] [:= | DEFAULT expr]; identifier [CONSTANT] datatype [NOT NULL] [:= | DEFAULT expr]; Не имеют компонент Хранят единственное значение Основные типы: –BINARY_INTEGER –NUMBER [(m,n)] –CHAR [(m)] –LONG –LONG RAW –VARCHAR2(m) –DATE –BOOLEAN

Объявление скалярных переменных v_genderCHAR(1); v_countBINARY_INTEGER := 0; v_total_salNUMBER(9,2) := 0; v_order_dateDATE := SYSDATE + 7; c_tax_rateCONSTANT NUMBER(3,2) := 8.25; v_validBOOLEAN NOT NULL := TRUE; v_genderCHAR(1); v_countBINARY_INTEGER := 0; v_total_salNUMBER(9,2) := 0; v_order_dateDATE := SYSDATE + 7; c_tax_rateCONSTANT NUMBER(3,2) := 8.25; v_validBOOLEAN NOT NULL := TRUE;... v_last_names_emp.last_name%TYPE; v_last_names_emp.last_name%TYPE; v_first_name s_emp.first_name%TYPE; v_first_name s_emp.first_name%TYPE; v_balanceNUMBER(7,2); v_balanceNUMBER(7,2); v_minimum_balancev_balance%TYPE := 10; v_minimum_balancev_balance%TYPE := 10; v_last_names_emp.last_name%TYPE; v_last_names_emp.last_name%TYPE; v_first_name s_emp.first_name%TYPE; v_first_name s_emp.first_name%TYPE; v_balanceNUMBER(7,2); v_balanceNUMBER(7,2); v_minimum_balancev_balance%TYPE := 10; v_minimum_balancev_balance%TYPE := 10;...

Составные типы данных Таблицы PL/SQL Первичный ключЗначение 1Jones 2Smith 3Maduro... BINARY_INTEGERСкалярный тип Записи Поле1 Поле2 Поле3

Создание таблицы PL/SQL TYPE type_name IS TABLE OF datatype [NOT NULL] INDEX BY BINARY_INTEGER; identifiertype_name; TYPE type_name IS TABLE OF datatype [NOT NULL] INDEX BY BINARY_INTEGER; identifiertype_name;... TYPE name_table_type IS TABLE OF VARCHAR2(25) TYPE name_table_type IS TABLE OF VARCHAR2(25) INDEX BY BINARY_INTEGER; INDEX BY BINARY_INTEGER; first_name_table name_table_type; first_name_table name_table_type; last_name_tablename_table_type; last_name_tablename_table_type; TYPE name_table_type IS TABLE OF VARCHAR2(25) TYPE name_table_type IS TABLE OF VARCHAR2(25) INDEX BY BINARY_INTEGER; INDEX BY BINARY_INTEGER; first_name_table name_table_type; first_name_table name_table_type; last_name_tablename_table_type; last_name_tablename_table_type;...

Создание записи TYPE type_name IS RECORD (field_name1 field_type [NOT NULL {:=|DEFAULT} expr], field_name2 field_type [NOT NULL {:=|DEFAULT} expr],...); identifiertype_name; TYPE type_name IS RECORD (field_name1 field_type [NOT NULL {:=|DEFAULT} expr], field_name2 field_type [NOT NULL {:=|DEFAULT} expr],...); identifiertype_name;... TYPE emp_record_type IS RECORD (last_nameVARCHAR2(25), first_nameVARCHAR2(25), genderCHAR(1)); employee_recordemp_record_type;... TYPE emp_record_type IS RECORD (last_nameVARCHAR2(25), first_nameVARCHAR2(25), genderCHAR(1)); employee_recordemp_record_type;... dept_records_dept%ROWTYPE; emp_records_emp%ROWTYPE;... dept_records_dept%ROWTYPE; emp_records_emp%ROWTYPE;...

Область видимости переменных... x BINARY_INTEGER; BEGIN... DECLARE y NUMBER; BEGIN... END;... END;... x BINARY_INTEGER; BEGIN... DECLARE y NUMBER; BEGIN... END;... END; Область видимости y Область видимости x

Присвоение значений переменным identifier := expr; plsql_table_name (primary_key_value) := expr; plsql_record_name.field_name := expr; identifier := expr; plsql_table_name (primary_key_value) := expr; plsql_record_name.field_name := expr; v_max_sal:= v_sal; last_name_table (3) := 'Maduro'; emp_record.last_name:= 'Maduro'; emp_record.first_name:= 'Elena'; emp_record.gender:= 'F'; v_max_sal:= v_sal; last_name_table (3) := 'Maduro'; emp_record.last_name:= 'Maduro'; emp_record.first_name:= 'Elena'; emp_record.gender:= 'F';

Присвоение значений переменным v_weight := v_weight + 1; v_new_locn := 'Western '|| v_new_locn; v_weight := v_weight + 1; v_message := v_message || ' is in stock'; v_new_locn := 'Western '|| v_new_locn; DECLARE v_weight NUMBER(3) := 600; v_weight NUMBER(3) := 600; v_message VARCHAR2(255) := 'Product 10012'; v_message VARCHAR2(255) := 'Product 10012';BEGINSub-Block DECLARE DECLARE v_weight NUMBER(3) := 1; v_weight NUMBER(3) := 1; v_message VARCHAR2(255) := 'Product 11001'; v_message VARCHAR2(255) := 'Product 11001'; v_new_locn VARCHAR2(50) := 'Europe'; v_new_locn VARCHAR2(50) := 'Europe'; BEGIN BEGIN END; END;END;

Операторы в PL/SQL Логические Арифметические Конкатенации Возведения в степень (**) Скобки Как в SQL } } v_count:= v_count + 1; v_equal:= (v_n1 = v_n2); v_valid:= (v_emp_id IS NOT NULL);

Функции в PL/SQL Доступны: –Числовые –Символьные –Преобразования типов –Работы с датами Недоступны: –GREATEST –LEAST –Групповые Как в SQL } } v_mailing_address := v_name||CHR(10)|| v_address||CHR(10)||v_country||CHR(10)|| v_zip_code; v_mailing_address := v_name||CHR(10)|| v_address||CHR(10)||v_country||CHR(10)|| v_zip_code; v_last_name:= UPPER (v_last_name);

Практическое занятие 1. Какие из приведенных описаний неверны и почему? Declare V_idNumber (7); Declare V_idNumber (7); Declare V_x, v_y, v_zVARCHAR (7); Declare V_x, v_y, v_zVARCHAR (7); Declare V_birtdatedate not null; Declare V_birtdatedate not null; Declare V_in_stockboolean := 1; Declare V_in_stockboolean := 1; Declare Emp_recordemp_record_type; Declare Emp_recordemp_record_type;

Практическое занятие 2. Создайте процедуру, принимающую два числа через переменные. Первое нужно разделить на второе и к результату прибавить второе число. Результат должен быть записан в переменную PL/SQL и выведен на экран. 3. Создайте функцию, вычисляющую общее вознаграждение за год. Функции должны передаваться годовая зарплата и процент премиальных. Премиальные необходимо преобразовать из целого числа в десятичное. Если зарплата не определена, то функция должна выдавать значение «ноль». Если премия не определена, функция должна выдавать только зарплату.