Oracle PL/SQL Вставка, обновление, удаление и выбор в [Пример]
В этом уроке мы научимся использовать SQL в PL/SQL. SQL — это фактический компонент, который обеспечивает выборку и обновление данных в базе данных, тогда как PL/SQL — это компонент, который обрабатывает эти данные. Далее в этой статье мы также обсудим, как объединить SQL в блоке PL/SQL.
DML-транзакции в PL/SQL
ДМЛ означает Язык манипулирования данными. Эти утверждения в основном используются для выполнения манипуляционной деятельности. Он касается следующих операций.
- Вставка данных
- Обновление данных
- Удаление данных
- Выбор данных
В PL/SQL мы можем манипулировать данными только с помощью команд SQL.
Вставка данных
В PL/SQL мы можем вставить данные в любую таблицу с помощью команды SQL INSERT INTO. Эта команда примет имя таблицы, столбец таблицы и значения столбца в качестве входных данных и вставит значение в базовую таблицу.
Команда INSERT также может брать значения непосредственно из другой таблицы, используя оператор «SELECT», вместо того, чтобы задавать значения для каждого столбца. С помощью оператора «SELECT» мы можем вставить столько строк, сколько содержит базовая таблица.
Синтаксис:
BEGIN
INSERT INTO <table_name>(<column1 >,<column2>,...<column_n>)
VALUES(<valuel><value2>,...:<value_n>);
END;
- Приведенный выше синтаксис показывает команду INSERT INTO. Имя и значения таблицы являются обязательными полями, тогда как имена столбцов не являются обязательными, если операторы вставки имеют значения для всех столбцов таблицы.
- Ключевое слово «ЗНАЧЕНИЯ» является обязательным, если значения указаны отдельно, как показано выше.
Синтаксис:
BEGIN
INSERT INTO <table_name>(<columnl>,<column2>,...,<column_n>)
SELECT <columnl>,<column2>,.. <column_n> FROM <table_name2>;
END;
- Приведенный выше синтаксис показывает команду INSERT INTO, которая принимает значения непосредственно из с помощью команды ВЫБОР.
- Ключевое слово «ЗНАЧЕНИЯ» в этом случае не должно присутствовать, поскольку значения не задаются отдельно.
Обновление данных
Обновление данных просто означает обновление значения любого столбца таблицы. Это можно сделать с помощью оператора «UPDATE». Этот оператор принимает имя таблицы, имя столбца и значение в качестве входных данных и обновляет данные.
Синтаксис:
BEGIN UPDATE <table_name> SET <columnl>=<VALUE1>,<column2>=<value2>,<column_n>=<value_n> WHERE <condition that uniquely identifies the record that needs to be update>; END;
- Приведенный выше синтаксис показывает ОБНОВЛЕНИЕ. Ключевое слово «SET» указывает этому механизму PL/SQL обновить значение столбца указанным значением.
- Предложение WHERE не является обязательным. Если этот пункт не указан, то значение указанного столбца во всей таблице будет обновлено.
Удаление данных
Удаление данных означает удаление одной полной записи из таблицы базы данных. Для этой цели используется команда «DELETE».
Синтаксис:
BEGIN DELETE FROM <table_name> WHERE <condition that uniquely identifies the record that needs to be update>; END;
- Приведенный выше синтаксис показывает команду DELETE. Ключевое слово FROM является необязательным, и с предложением FROM или без него команда ведет себя одинаково.
- Предложение WHERE не является обязательным. Если этот пункт не указан, то вся таблица будет удалена.
Выбор данных
Проекция/извлечение данных означает получение необходимых данных из таблицы базы данных. Этого можно добиться с помощью команды «SELECT» с предложением «INTO». Команда «SELECT» извлекает значения из базы данных, а предложение «INTO» присваивает эти значения локальной переменной Блок PL / SQL.
Ниже приведены моменты, которые необходимо учитывать в операторе «SELECT».
- Оператор SELECT должен возвращать только одну запись при использовании предложения INTO, поскольку одна переменная может содержать только одно значение. Если инструкция «SELECT» возвращает более одного значения, будет возбуждено исключение «TOO_MANY_ROWS».
- Оператор SELECT присваивает значение переменной в предложении INTO, поэтому для заполнения значения необходимо получить хотя бы одну запись из таблицы. Если он не получил ни одной записи, возникает исключение NO_DATA_FOUND.
- Количество столбцов и их тип данных в предложении «SELECT» должно совпадать с количеством переменных и их типов данных в предложении «INTO».
- Значения извлекаются и заполняются в том же порядке, как указано в операторе.
- Предложение «WHERE» является необязательным, что позволяет иметь больше ограничений на извлекаемые записи.
- Оператор SELECT можно использовать в условии WHERE других операторов DML для определения значений условий.
- Оператор «SELECT» при использовании операторов «INSERT», «UPDATE», «DELETE» не должен содержать предложения «INTO», поскольку в этих случаях он не будет заполнять какую-либо переменную.
Синтаксис:
BEGIN SELECT <columnl>,..<column_n> INTO <vanable 1 >,. .<variable_n> FROM <table_name> WHERE <condition to fetch the required records>; END;
- Приведенный выше синтаксис показывает команду SELECT-INTO. Ключевое слово FROM является обязательным и определяет имя таблицы, из которой необходимо получить данные.
- Предложение WHERE не является обязательным. Если это предложение не указано, то будут выбраны данные из всей таблицы.
Пример 1: В этом примере мы увидим, как выполнять операции DML в PL/SQL. Мы собираемся вставить следующие четыре записи в таблицу emp.
| EMP_NAME | ЭМП_НО | ЗАРПЛАТА | МЕНЕДЖЕР |
|---|---|---|---|
| BBB | 1000 | 25000 | AAA |
| XXX | 1001 | 10000 | BBB |
| YYY | 1002 | 10000 | BBB |
| ZZZ | 1003 | 7500 | BBB |
Затем мы обновим зарплату «XXX» до 15000 и удалим запись о сотруднике «ZZZ». Наконец, мы собираемся спроецировать сведения о сотруднике «XXX».
DECLARE
l_emp_name VARCHAR2(250);
l_emp_no NUMBER;
l_salary NUMBER;
l_manager VARCHAR2(250);
BEGIN
INSERT INTO emp(emp_name,emp_no,salary,manager)
VALUES(‘BBB’,1000,25000,’AAA’);
INSERT INTO emp(emp_name,emp_no,salary,manager)
VALUES('XXX',1001,10000,’BBB);
INSERT INTO emp(emp_name,emp_no,salary,managed
VALUES(‘YYY',1002,10000,'BBB');
INSERT INTO emp(emp_name,emp_no,salary,manager)
VALUES(‘ZZZ',1003,7500,'BBB'):
COMMIT;
Dbms_output.put_line(‘Values Inserted');
UPDATE EMP
SET salary=15000
WHERE emp_name='XXX';
COMMIT;
Dbms_output.put_line(‘Values Updated');
DELETE emp WHERE emp_name='ZZZ';
COMMIT:
Dbms_output.put_line('Values Deleted );
SELECT emp_name,emp_no,salary,manager INTO l_emp_name,l_emp_no,l_salary,l_manager FROM emp WHERE emp_name='XXX';
Dbms output.put line(‘Employee Detail’);
Dbms_output.put_line(‘Employee Name:‘||l_emp_name);
Dbms_output.put_line(‘Employee Number:‘||l_emp_no);
Dbms_output.put_line(‘Employee Salary:‘||l_salary);
Dbms output.put line(‘Emplovee Manager Name:‘||l_manager):
END;
/
Вывод:
Values Inserted Values Updated Values Deleted Employee Detail Employee Name:XXX Employee Number:1001 Employee Salary:15000 Employee Manager Name:BBB
Пояснение к коду:
- Строка кода 2–5: объявление переменной.
- Строка кода 7–14: Вставка записей в таблицу emp.
- Строка кода 15: Фиксация транзакций вставки.
- Строка кода 17–19: Обновление зарплаты сотрудника «XXX» до 15000.
- Строка кода 20: Фиксация транзакции обновления.
- Строка кода 22: Удаление записи «ZZZ»
- Строка кода 23: Фиксация транзакции удаления.
- Строка кода 25–27: Выбор записи «XXX» и занесение ее в переменную l_emp_name, l_emp_no, l_salary, l_manager.
- Строка кода 28–32: Отображение значения выбранных записей.

