Новости

НОУ ІНТУЇТ | лекція | Внутрішній мову СУБД. Порівняльні характеристики T-SQL і PL / SQL

  1. Неявне використання змінної циклу declare n number: = 100; begin for n in 1..10 loop dbms_output.put_line...
  2. Використання міток
  3. Основні об'єкти. Збережені процедури і функції
  4. Основні об'єкти. тригери
  5. Практичні заняття
  6. Підготовка SQL скриптів генерації схеми відносин БД в ERwin. Розробка скрипта для введення тестової...
  7. Архітектура MS SQL Server 2005. Налагодження та використання основних компонент середовища. Створення...
  8. Робота з СУБД MS SQL Server 2005, ORACLE 10g. Приклади з'єднань з БД, технології розробки кліенского додатки
  9. Робота з базами даних з J2EE Web-контейнера
  10. Об'єктно-реляційне відображення для роботи з базами даних
  11. Використання препроцесора для роботи з API СУБД
Неявне використання змінної циклу

declare n number: = 100; begin for n in 1..10 loop dbms_output.put_line (n); end loop; dbms_output.put_line ( 'after' || n); end; declare n number; begin for i in 1..10 loop n: = i; dbms_output.put_line (n || '' || i); - error - i: = 20; end loop; dbms_output.put_line (n); end;

Динамічна зміна кордонів

declare n number: = 3; begin for i in 1..n loop if n <10 then n: = n + 1; end if; dbms_output.put_line (i || '' || n); end loop; end;

Використання міток

begin << l1 >> for i in 1..3 loop for i in 5..6 loop dbms_output.put_line (l1.i || '' || i); end loop; end loop; end; begin << l1 >> for i in 1..3 loop for i in 5..6 loop dbms_output.put_line (l1.i || '' || i); exit l1 when i = 5; end loop; end loop; end; - goto declare n number; begin if n = null then dbms_output.put_line ( 'in if'); else goto met1; end if; dbms_output.put_line ( 'after if'); << met1 >> dbms_output.put_line ( 'after met1'); end; declare n number: = 1; begin for i in 1..10 loop if i = 5 then goto cont; end if; n: = n + 1; dbms_output.put_line (n); << cont >> null; end loop; end;

Основні об'єкти. Збережені процедури і функції

Процедура або функція - це підпрограма, що складається з SQL операторів і команд процедурного мови. Процедура і функція може:

  • Утримувати параметри (аргументи);
  • Викликати інші процедури;
  • Повертати свій статус викликає процедурі або пакету, який вказує на успішне закінчення або помилку, і в разі помилки на її причину;
  • Повертати значення параметрів викликає процедурі або пакету;
  • Виконується завжди на стороні сервера.
  • Функція крім того повертає результат через своє ім'я.

Збережені процедури і функції значно збільшують потужність, ефективність і гнучкість мови SQL і значно прискорюють виконання SQL-оператора і пакетів.

Збережені процедури здійснюються командою create procedure. Функції здійснюються командою - create function. Для виконання процедури, як системної, так і певної користувачем, використовується команда execute (виконати). Можна також просто вказати назву збереженої процедури, якщо воно є першим словом в операторі або пакеті.

Процедура або функція має дві частини:

  • Специфікація, яка оголошує процедуру або функцію і складається з такої інформації:
    • імені процедури
    • Імен і типів даних аргументів, якщо є
    • Крім цього, ТІЛЬКИ для функцій - типу даних повертається
  • Тіло, яке визначає процедуру або функцію. Тіло процедури складається з блоку PL / SQL або T- SQL (який містить пропозиції SQL і процедурного розширення).

Основні об'єкти. тригери

Тригер - це процедура, що зберігається спеціального виду, яка запускається при виникненні якої-небудь події, зазвичай зміни даних в таблиці. Зокрема, тригери допомагають зберегти кількість посилань цілісність даних користувача, перевіряючи їх узгодженість в логічно зв'язаних таблицях. Основною перевагою тригерів є те, що вони викликаються автоматично. Вони будуть працювати незалежно від причини, яка викликала модифікацію даних, як, наприклад, після введення даних клерком, так і при виконанні деякої прикладної процедури. Тригер може бути пов'язаний з одним або більшою кількістю постачальників модифікації, такими як update, insert або delete.

Практичні заняття

Постановка задачі. Проектування даних на концептуальному і логічному рівнях. Нормалізація відносин.

Презентація по ER-моделювання Презентація по ER-моделювання

ER нотації ER нотації

Приклад моделі в ERwin

Підготовка SQL скриптів генерації схеми відносин БД в ERwin. Розробка скрипта для введення тестової інформації.

Відео-презентація (Для програвання потрібно Windows Media Player)

Архітектура MS SQL Server 2005. Налагодження та використання основних компонент середовища. Створення навчальної бази даних.

Відео-презентація (Для програвання потрібно Windows Media Player)

Робота з СУБД MS SQL Server 2005, ORACLE 10g. Приклади з'єднань з БД, технології розробки кліенского додатки

Використання технології Java Database Connectivity (JDBC) для роботи з базами даних

презентація презентація

Приклади до презентації

SQL-скрипти, проект і вихідні коди SQL-скрипти, проект і вихідні коди

package org.mai806.jdbcsample; import java.sql. *; public class QuerySample {public static void main (String [] args) throws Exception {/ * ======== Підключення до MS SQL Server ===== * / // Завантаження драйвера Class.forName ( "com. microsoft.sqlserver.jdbc.SQLServerDriver "); // З'єднання з базою даних Connection connection = DriverManager.getConnection ( "jdbc: sqlserver: // localhost: 1 433; databaseName = o01;", // localhost - сервер СУБД, o01 - ім'я бази даних "sa", "123") ; // користувач, пароль / * ======== Підключення до Oracle ============ // Завантаження драйвера Class.forName ( "oracle.jdbc.OracleDriver"); // З'єднання з базою даних Connection connection = DriverManager.getConnection ( "jdbc: oracle: thin: @localhost: 1 521: orcl", // localhost - сервер СУБД, orcl - SID бази оракла "o01", "o01"); // користувач, пароль // Створення Statement PreparedStatement stmt = connection.prepareStatement ( "select ID, NAME from PERSON where NAME like?"); stmt.setString (1, "% S%"); // Виконання запиту ResultSet rs = stmt.executeQuery (); // Перебір результату виконання запиту while (rs.next ()) {// Приклад вибору параметра за номером або по імені System.out.println ( "ID:" + rs.getLong (1) + "; NAME =" + rs .getString ( "NAME")); } // закриття використаних ресурсів БД rs.close (); stmt.close (); connection.close (); }} Лістинг P.1. Виконання запиту: QuerySample.java package org.mai806.jdbcsample; import java.sql. *; import java.util.ResourceBundle; public class StoredProcedureSample {private static Connection connection = null; public static void main (String [] args) throws Exception {// Отримання сполуки з значень параметрів у файлі properties ResourceBundle properties = ResourceBundle.getBundle ( "database"); Class.forName (properties.getString ( "driver")); connection = DriverManager.getConnection (properties.getString ( "url"), properties.getString ( "user"), properties.getString ( "password")); transferAmount (1,2,100.0); connection.close (); } / ** * Перекладає зазначену суму з одного рахунку на інший * @param from рахунок платника * @param to рахунок одержувача * @param amount сума * / public static void transferAmount (long from, long to, double amount) throws Exception {/ / Створення Statement CallableStatement stmt = connection.prepareCall ( "{call TransferAmount (?,?,?)}"); // Установка параметрів stmt.setLong (1, from); stmt.setLong (2, to); stmt.setDouble (3, amount); // Виконання процедури stmt.execute (); }} Лістинг P.2. Виконання процедури, що: StoredProcedureSample.java package org.mai806.jdbcsample; import java.sql. *; import java.util.ResourceBundle; public class TransactionalSample {private static Connection connection = null; public static void main (String [] args) throws Exception {// Отримання сполуки з значень параметрів у файлі properties ResourceBundle properties = ResourceBundle.getBundle ( "database"); Class.forName (properties.getString ( "driver")); connection = DriverManager.getConnection (properties.getString ( "url"), properties.getString ( "user"), properties.getString ( "password")); // Ручне управління транзакціями connection.setAutoCommit (false); try {transferAmount (2, 1, 10.0); } Finally {connection.close (); }} / ** * Перекладає зазначену суму з одного рахунку на інший * @param from рахунок платника * @param to рахунок одержувача * @param amount сума * / public static void transferAmount (long from, long to, double amount) throws Exception { PreparedStatement stmt = null; Statement query = null; try {stmt = connection.prepareStatement ( "update ACCOUNT set AMOUNT = AMOUNT +? where ID =?"); // Забираємо суму з рахунку платника stmt.setDouble (1, -amount); stmt.setLong (2, from); stmt.execute (); // Додаємо суму на рахунок одержувача stmt.setDouble (1, amount); stmt.setLong (2, to); stmt.execute (); // Пост-перевірка: негативність рахунку платника query = connection.createStatement (); ResultSet rs = query.executeQuery ( "select AMOUNT from ACCOUNT where ID =" + from + "and AMOUNT <0"); if (rs.next ()) {throw new Exception ( "На рахунку №" + from + "недосточності засобів [" + (amount + rs.getDouble (1)) + "] для зняття суми [" + amount + "]") ; } Connection.commit (); System.out.println ( "Перерахування коштів успішно виконано"); } Catch (Exception e) {e.printStackTrace (); connection.rollback (); } Finally {if (stmt! = Null) stmt.close (); if (query! = null) query.close (); }}} Лістинг P.3. Робота з транзакціями: TransactionalSample.java

Робота з базами даних з J2EE Web-контейнера

презентація презентація

Об'єктно-реляційне відображення для роботи з базами даних

презентація презентація

Використання препроцесора для роботи з API СУБД

презентація презентація

Select ID, NAME from PERSON where NAME like?
Update ACCOUNT set AMOUNT = AMOUNT +?
Where ID =?

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

Или позвоните нам по телефонам: (048) 823-25-64

Организация (обязательно) *

Адрес доставки

Объем

Как с вами связаться:

Имя

Телефон (обязательно) *

Мобильный телефон

Ваш E-Mail

Дополнительная информация: