Oracle 4名员工的显示列具有类似Sau MAN的职务id,并且具有薪资>;10000
我想显示:employee id,employee name,job id,salary,对于4个工作id像sau MAN的员工,使用循环语句显示sau MAN,salary>10000,我写了这段代码,但我得到了一个错误 这个代码怎么了Oracle 4名员工的显示列具有类似Sau MAN的职务id,并且具有薪资>;10000,oracle,loops,for-loop,plsql,Oracle,Loops,For Loop,Plsql,我想显示:employee id,employee name,job id,salary,对于4个工作id像sau MAN的员工,使用循环语句显示sau MAN,salary>10000,我写了这段代码,但我得到了一个错误 这个代码怎么了 DECLARE emp_name employees.last_name%type; emp_id employees.employee_id%type; sal employees.salary%type; jobid employees.j
DECLARE
emp_name employees.last_name%type;
emp_id employees.employee_id%type;
sal employees.salary%type;
jobid employees.job_id%type;
BEGIN
SELECT employee_id,
last_name,
job_id,
salary
INTO emp_id,
emp_name,
jobid,
sal
FROM employees
WHERE salary>10000
AND job_id LIKE'%SA\_%N' ESCAPE'\';
FOR i 1..3 dpms_output.put_line(emp_id||' '||emp_name||' '||jobid||' '||sal);
END LOOP;
END;
这是我得到的错误:
Error starting at line 1 in command:
DECLARE
emp_name employees.last_name%type;
emp_id employees.employee_id%type;
sal employees.salary%type;
jobid employees.job_id%type;
BEGIN
SELECT employee_id,
last_name,
job_id,
salary
INTO emp_id,
emp_name,
jobid,
sal
FROM employees
WHERE salary>10000
AND job_id LIKE'%SA\_%N' ESCAPE'\';
FOR i 1..3 dpms_output.put_line(emp_id||' '||emp_name||' '||jobid||' '||sal);
END LOOP;
END;
Error report:
ORA-06550: line 20, column 7:
PLS-00103: Encountered the symbol "1" when expecting one of the following:
in
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:
这可以通过执行以下操作来实现:
begin
for i in ( SELECT employee_id, last_name, job_id, salary
FROM employees
WHERE salary > 10000
AND job_id LIKE '%SA\_%N' ESCAPE '\' ) LOOP
dbms_output.put_line( i.employee_id || ' '
|| i.last_name || ' '
|| i.job_id || ' '
|| i.salary );
end loop;
end;
不过你不需要这么做。你可以选择你想要的。一般来说,请注意间距,它使代码更具可读性
实际误差如下:
应为i in 1。。3环路
dbms\u输出
的拼写与我所做的一样,而不是dpms\u输出
如果要选择所有内容,然后循环遍历这些值,可以使用。但在这种情况下,这是过分的。请注意,我不假设查询将返回的值的数量
declare
cursor c_emp is
select employee_id, last_name, job_id, salary
from employees
where salary > 10000
and job_id like '%SA\_%N' ESCAPE '\';
type t__emp is table of c_emp%rowtype index by binary_integer;
t_emp t__emp;
begin
open c_emp;
fetch c_emp bulk collect into t_emp;
close c_emp;
for i in t_emp.first .. t_emp.last loop
dbms_output.put_line( i.employee_id || ' '
|| i.last_name || ' '
|| i.job_id || ' '
|| i.salary );
end loop;
end;
/
抱歉语法突出显示。SQL标记中转义单引号上的Google Prettify有一个bug。…您会得到什么错误?至少
1..3
后面的循环丢失了。1..3
之前的中的丢失了:@Toru您的意思是什么,我该怎么办do@BurhanKhalid我将errornow放入它的工作状态,但它不显示在输出i write set serveroutput OnSelect语句是否返回任何行?也许你的表中没有人有足够高的工资?没有,我之前检查过,它包含5名从事此工作和此工资的员工,但问题是我没有,但我在declare部分声明了select into变量中的值