Оператор выбора внутри хранимой процедуры Oracle - PullRequest
0 голосов
/ 09 октября 2018

Я пытаюсь самоучить себя SQL.Я работаю над вызовом простого оператора select из хранимой процедуры в Oracle.

Я создал базу данных сотрудников с 2 таблицами;сотрудники и отдел.Я хочу выбрать заявление, которое возвращает всех сотрудников из определенного отдела.

Это то, что у меня есть до сих пор, и я не могу понять, где я иду не так

create or replace procedure user_empdepart (depart_name varchar(40))
AS
BEGIN
    SELECT emp_name FROM employee JOIN department ON department.departmentID = 
employee.departmentID
    WHERE depart_name = 'research';
END;

И тогда я надеюсь назвать вышесказанное:

exec user_empdepart(research);

Я использую SQL Developer Oracle

Я получаю следующее сообщение об ошибке:

Ошибка (99,50): PLS-00103: Обнаружен символ «ОТДЕЛ» при ожиданииодно из следующего:,;для группы, имеющей пересечение, минус порядок, начало объединения, где соединение

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

В базе данных Oracle операторы SQL, выполняемые непосредственно на клиенте (например, SQL-Developer или SQLPlus), обрабатываются как обычный, обычный SQL.
Но если вы собираетесь использовать команды SQL в процедуре или функции, Oracleобрабатывает их как команды PL / SQL, а не как SQL.
Для простых команд INSERT, DELETE и UPDATE синтаксис в PL / SQL такой же, как в SQL, однако для SELECT синтаксис немного отличается: PL / SQLОператор SELECT INTO

Вы должны использовать синтаксис SELECT expression-list INTO variables-list/record FROM ......
Вы не можете использовать SELECT expression-list FROM ....., это приводит к синтаксической ошибке.

0 голосов
/ 10 октября 2018

Я думаю, тебе это нужно -

create or replace procedure user_empdepart (depart_name varchar(40))
AS
DECLARE dept_name varchar(200);
dept_name := depart_name;
BEGIN
SELECT emp_name FROM employee JOIN department ON department.departmentID = employee.departmentID
WHERE depart_name := dept_name;
END;
...