Oracle存储过程中的Select语句

时间:2018-10-09 20:17:51

标签: sql oracle-sqldeveloper

我正在尝试自学SQL。我正在从oracle中的存储过程中调用一个简单的select语句。

我创建了一个有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:预期以下情况之一时遇到符号“ DEPARTMENT”:对于具有相减负序的组,在连接处开始联合

2 个答案:

答案 0 :(得分:0)

我认为您需要-

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;

答案 1 :(得分:0)

在Oracle数据库中,直接在客户端(如SQL-Developer或SQLPlus)中执行的SQL语句被视为普通的普通SQL。
但是,如果要在过程或函数中使用SQL命令,Oracle会将它们视为PL / SQL命令,而不是SQL。
对于简单的INSERT,DELETE和UPDATE命令,PL / SQL中的语法与SQL中的语法相同,但是对于SELECT而言,语法略有不同:PL/SQL SELECT INTO Statement

您必须使用SELECT expression-list INTO variables-list/record FROM .....语法。
您不能使用SELECT expression-list FROM .....,这会产生语法错误。