oracle sql developer 执行pl/sql 语句出现错误

代码如下:declareemp_idnumber;dep_idnumber;fnamevarchar2;lnamevarchar(25);c_emailvarchar(2... 代码如下:
declare
emp_id number;
dep_id number;
fname varchar2;
lname varchar(25);
c_email varchar(25);
phone varchar2;
job varchar2;
n_salary number;
m_id number;
it_id number;

select department_id into it_id from hr.departments where department_name = 'IT';cursor curl is select department_id,employee_id,first_name,last_name,email, phone_number,job_id,salary,manager_id from hr.employees;
begin
open curl;
fetch curl into dep_id,emp_id,f_name,l_name,c_email, phone,job,n_salary,m_id;
loop
exit when curl%NOTFOUND;
if dep_id = it_id then
insert into IT_EMPLOYEES
values(emp_id,fname,lname,c_email,phone,job,n_salary,m_id);
else
end if;
fetch curl into dep_id,emp_id,f_name,l_name,c_email, phone,job,n_salary,m_id;
end loop;
close curl;
end;

执行后出现错误信息:
ORA-06550: 第 13 行, 第 1 列:
PLS-00103: 出现符号 "SELECT"在需要下列之一时:
begin function pragma
procedure subtype type <an identifier>
<a double-quoted delimited-identifier> current cursor delete
exists prior
符号 "begin" 被替换为 "SELECT" 后继续。
ORA-06550: 第 14 行, 第 8 列:
PLS-00103: 出现符号 "CURL"在需要下列之一时:
:= . ( @ % ;
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:

在sql*plus中执行也是这样,是什么原因那?
展开
 我来答
ct2k01
2013-01-05 · TA获得超过1570个赞
知道小有建树答主
回答量:1653
采纳率:0%
帮助的人:1109万
展开全部
先随便指出几个语法错误:
1、
select department_id into it_id from hr.departments where department_name = 'IT';
这一行不应该出现在DECLARE部分

2、
fname varchar2;
phone varchar2;
job varchar2;
VARCHAR2没有定义长度

3、
else之后没有语句

其它的还没有细看。

你这个貌似是把HR的员工表里所有IT部的员工信息插入另一张表IT_EMPLOYEES,完全不用这么复杂:
declare
it_id number;
begin
select department_id into it_id from hr.departments where department_name = 'IT';
for it_emp in (select employee_id,first_name,last_name,email, phone_number,job_id,salary,manager_id from hr.employees where department_id=it_id) loop
insert into IT_EMPLOYEES values(it_emp.employee_id,it_emp.first_name,it_emp.last_name,it_emp.email, it_emp.phone_number,it_emp.job_id,it_emp.salary,it_emp.manager_id);
end loop;
commit;
end;
/
百度网友8a93e5d
2013-01-04
知道答主
回答量:3
采纳率:0%
帮助的人:3645
展开全部
感觉很乱,在声明中不应该出现select...into...吧(select department_id into it_id from hr.departments where department_name = 'IT';)把它放入begin语句块里试试。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
azzo_c
2013-01-05 · TA获得超过142个赞
知道答主
回答量:122
采纳率:0%
帮助的人:53.3万
展开全部
问题太多了。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a532645055
2013-01-04
知道答主
回答量:6
采纳率:0%
帮助的人:5.3万
展开全部
ddsfsdafsd sdasd
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式