我正在尝试自学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”:对于具有相减负序的组,在连接处开始联合
答案 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 .....
,这会产生语法错误。