Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE TABLE temp_table (
- num_col NUMBER,
- char_col VARCHAR2(250));
- DECLARE
- /* Объявляем переменные, используемые в этом блоке. */
- v_Num1 NUMBER := 1;
- v_String1 VARCHAR2(50) := 'Hello World!';
- BEGIN
- /* Используя значения переменных, введем строку в таблицу temp_table. */
- INSERT INTO temp_table (num_col, char_col) VALUES (v_Num1, v_String1);
- END;
- /
- CREATE OR REPLACE PROCEDURE InsertlntoTemp AS
- /* Объявляем переменные, используемые в этом блоке. */
- v_Num1 NUMBER := 1;
- v_String1 VARCHAR2(50) := 'Hello World!';
- BEGIN
- /* Используя значения переменных, введем строку в таблицу temp_table. */
- INSERT INTO temp_table (num_col, char_col) VALUES (v_Num1, v_String1);
- END InsertlntoTemp;
- /
- BEGIN
- InsertlntoTemp;
- END;
- /
- DECLARE
- v_Description VARCHAR2(50);
- v_NuinberSeats NUMBER := 45;
- v_Counter BINARY_INTEGER := 0;
- DECLARE
- v_String1 VARCHAR2(10);
- v_String2 VARCHAR2(15);
- v_Numeric NUMBER;
- BEGIN
- v_String1 := 'Hello';
- v_Strlng2 := v_String1;
- v_Numeric := -12.4;
- END;
- /
- DECLARE
- v_TempVar VARCHAR2(10) := 'PL';
- v_Result VARCHAR2(20);
- BEGIN
- v_Result := v_TempVar
- END;
- /
- DECLARE
- v_Number NUMBER;
- v_Comment VARCHAR2(35);
- BEGIN
- /* Извлекаем количество записей в temp_table.
- Сохраняем результат в v_Number. */
- SELECT COUNT(*) INTO v_Number FROM temp_table;
- IF v_Number < 50 THEN
- v_Comment := 'Меньше 50';
- ELSIF v_Number < 100 THEN
- v_Comment := 'Меньше 100';
- ELSE
- v_Comment := 'Больше 100';
- END IF;
- END;
- /
- DECLARE
- v_Counter BINARY_INTEGER := 1;
- BEGIN
- LOOP
- /* Введем в таблицу temp_table строку с текущим значением
- счетчика цикла.*/
- INSERT INTO temp_table
- VALUES (v_Counter, 'LOOP index');
- v_Counter := v_Counter + 1;
- -- Условие выхода: когда счетчик цикьс: станет > 50, цикл будет завершен.
- IF v_Counter > 50 THEN EXIT; END IF;
- END LOOP;
- END;
- DECLARE
- v_Counter BINARY_INTEGER := 1;
- BEGIN
- /* Проверяем счетчик цикла перед каждой итерацией - на предмет того, что значение счетчика меньше 50.*/
- WHILE v_Counter <= 50 LOOP
- INSERT INTO temp_table
- VALUES (v_Counter, 'Loop index');
- v_Counter ;= v_Counter + 1;
- END LOOP;
- END;
- BEGIN
- FOR v_Counter IN 1..50 LOOP
- INSERT INTO temp_table
- VALUES (v_Counter, 'Loop Index');
- END LOOP;
- END;
- CREATЕ TABLE students (
- Id NUMBER,
- first_name VARCHAR2(50),
- last_name VARCHAR2(50),
- major VARCHAR2(10));
- INSERT INTO students (ID, FIRST_NAME, LAST_NAME, MAJOR) VALUES (1, ‘Николай’, ‘Сидоров’, ‘Информатика’);
- INSERT INTO students (ID, FIRST_NAME, LAST_NAME, MAJOR) VALUES (2, ‘Петр’, ‘Иванов’, ‘Ин. язык’);
- INSERT INTO students (ID, FIRST_NAME, LAST_NAME, MAJOR) VALUES (3, ‘Михаил’, ‘Петров’, ‘Информатика’);
- CREATЕ SEQUENCE student_sequence;
- COMMIT;
- //
- DECLARE
- /* Выходные переменные для хранения результатов запроса */
- v_StudentID students.id%TYPE;
- v_FirstName students.first_name%TYPE;
- v_LastName students.last_name%TYPE;
- /* Переменная привязки, используемая в запросе */
- v_Major students.major%TYPE := 'Информатика';
- /* Объявление курсора */
- CURSOR c_Students IS SELECT id, first_name, last_name FROM students WHERE major = v_Major;
- BEGIN
- /* Идентифицируем строки активного набора и подготовимся к дальнейшей
- обработке данных */
- OPEN c_Students;
- LOOP
- /* Извлечем каждую строку активного набора в переменные PL/SQL */
- FETCH c_Students INTO v_StudentID, v_FirstName, v_LastName;
- /* Если строки, которые нужно извлечь, закончились, выходим из цикла */
- EXIT WHEN c_Students%NOTFOUND;
- END LOOP;
- /* Освободим ресурсы, используемые запросом */
- CLOSE c_Students;
- END;
- //
- CREATE OR REPLACE PROCEDURE AddNewStudent (
- p_FirstName students.first_name%TYPE,
- p_LastName students.last_name%TYPE,
- p_Major students.major%TYPE) AS
- BEGIN
- /* Внесем новую строку в таблицу students. Воспользуемся последовательностью studet_sequence для генерации идентификатора нового студента*/
- INSERT INTO students (ID, first_name, last_name, major) VALUES (student_sequence.NEXTVAL, p_FirstName, p_LastName, p_Major);
- END AddNewStudent;
- /
- BEGIN
- AddNewStudent('Василий', 'Николаев', 'Информатика');
- END;
- /
- CREATE OR REPLACE FUNCTION CountStudents RETURN NUMBER IS v_Students NUMBER;
- BEGIN
- -- Получим текущее и максимальное число студентов в группе.
- SELECT COUNT(*) INTO v_Students FROM students;
- RETURN v_Students;
- END CountStudents;
- /
- SELECT CountStudents FROM dual;
- ///
- CREATE OR REPLACE PACKAGE StudPackage AS
- --Добавляет нового студента.
- PROCEDURE AddNewStudent ( p_FirstName students.first_name%TYPE, p_LastName students.last_name%TYPE, p_Major students.major%TYPE);
- -- Удаляет указанного студента
- PROCEDURE RemoveStudent( p_StudetitID IN students. id%TYPE);
- END StudPackage;
- /
- CREATE OR REPLACE PACKAGE BODY StudPackage AS
- -- Добавляет нового студента.
- PROCEDURE AddNewStudent ( p_FirstName students.first_name%TYPE, p_LastName students.last_name%TYPE, p_Major students.major%TYPE) AS
- BEGIN
- /* Внесем новую строку в таблицу students. */
- INSERT INTO students (ID, first_name, last_name, major) VALUES (student_sequence.NEXTVAL, p_FirstName, p_LastName, p_Major);
- END AddNewStudent;
- -- Удаляет указанного студента
- PROCEDURE RemoveStudent( p_StudetitID IN students. id%TYPE) IS
- BEGIN
- DELETE FROM students WHERE student_id = p_StudentID;
- END RemoveStudent;
- END StudPackage;
- /
- BEGIN
- StudPackage.RemoveStudent(1);
- END;
- /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement