Oracle 我对游标的SQL查询有什么问题
这是我应该做的。假设已创建表,并且所有列的名称都正确 “使用存储过程和光标,显示职务id为IT_PROG或SA_MAN且工资高于3000的经理的位置(包括街道、邮政编码、城市和国家/地区)” 这是我到目前为止编写的代码,但游标的sql语句似乎不起作用。对于部门表,FK为经理ID和地点ID;对于员工表,FK为工作ID,地点表无FK。所有主键都已设置 代码如下:Oracle 我对游标的SQL查询有什么问题,oracle,plsql,database-cursor,Oracle,Plsql,Database Cursor,这是我应该做的。假设已创建表,并且所有列的名称都正确 “使用存储过程和光标,显示职务id为IT_PROG或SA_MAN且工资高于3000的经理的位置(包括街道、邮政编码、城市和国家/地区)” 这是我到目前为止编写的代码,但游标的sql语句似乎不起作用。对于部门表,FK为经理ID和地点ID;对于员工表,FK为工作ID,地点表无FK。所有主键都已设置 代码如下: create or replace procedure mgtLocation is cursor getLoc is
create or replace procedure mgtLocation
is
cursor getLoc is
select LOCATIONS.STREET_ADDRESS, LOCATIONS.POSTAL_CODE, LOCATIONS.CITY,
LOCATIONS.COUNTRY, LOCATIONS.LOCATIONS_ID, LOCATIONS.LOCATIONS_ID
from LOCATIONS
inner join DEPARTMENTS on DEPARTMENTS.MANAGER_ID = EMPLOYEES.EMPLOYEE_ID
inner join LOCATIONS on LOCATIONS.LOCATION_ID = DEPARTMENTS.LOCATION_ID
where EMPLOYEES.Job_ID in (select Job_ID from EMPLOYEES where Job_ID = 'IT_PROG' or Job_ID = 'SA_MAN' and SALARY > 3000);
EmpLoc getLoc%rowtype;
begin
dbms_output.put_line('=================');
open getLoc;
loop
fetch getLoc into EmpLoc;
EXIT WHEN getLoc%NOTFOUND;
dbms_output.put_line('Street: ' || EmpLoc.STREET_ADDRESS ||
' Zip Code: ' || EmpLoc.POSTAL_CODE ||
' City: ' || EmpLoc.CITY ||
' Country: ' || EmpLoc.COUNTRY);
end loop;
dbms_output.put_line('=================');
close getLoc;
end;
/
execute mgtLocation;
我得到了一个内部连接的错误,我似乎无法找出如何修复它们,以使其工作 您可以尝试以下方法:
cursor getLoc is
select LOCATIONS.STREET_ADDRESS,
LOCATIONS.POSTAL_CODE, LOCATIONS.CITY,
LOCATIONS.COUNTRY, LOCATIONS.LOCATIONS_ID,
LOCATIONS.LOCATIONS_ID
from LOCATIONS
inner join DEPARTMENTS on
DEPARTMENTS.LOCATION_ID = LOCATIONS.LOCATION_ID
inner join EMPLOYEES on
EMPLOYEES.EMPLOYEE_ID =
DEPARTMENTS.MANAGER_ID
where (EMPLOYEES.Job_ID = 'IT_PROG' or
EMPLOYEES.Job_ID = 'SA_MAN')
and SALARY > 3000;
过程代码是高度特定于供应商的-因此请添加一个标记,以指定您是使用的是
mysql
、postgresql
、sql server
、oracle
还是db2
-或其他完全不同的代码。请检查,在查询中,您没有在from子句中指定表employees
,而是在JOIN中引用它。您得到了什么错误?为我们准备了一个ORA-xxxxx?看起来像是一个简单的错误:来自位置
应该是来自员工
,