pl/sql函数过程结构
上一篇 /
下一篇 2008-05-19 21:23:26
/ 个人分类:PL/SQL
今天第一次搞PL/sql函数,以前也看过很多相关介绍,但是一直没有实践
用的
开发工具是
oracle 的 sql developer,不太熟悉
犯了错误,花费了时间,当然也学到了一些知识la
第一个使用游标的过程也即函数总算成功啦
实践如下
在开发工具的左边视图的PROCEDURE右键新规
生成如下代码
CREATE OR REPLACE
PROCEDURE PROCEDURE2 AS
BEGIN
NULL;
END PROCEDURE2;
使用hr schema
将代码修改成如下
CREATE OR REPLACE
PROCEDURE PROCEDURE2 AS
declare
cursor emp_cursor is select EMPLOYEE_ID,salary from EMPLOYEES;
emp_record emp_cursor%rowtype;
begin
open emp_cursor;
loop
fetch emp_cursor into emp_record;
exit when emp_cursor%NOTFOUND;
if emp_record.salary>2000 then
dbms_output.PUT_LINE(emp_record.EMPLOYEE_ID);
end if;
end loop;
close emp_cursor;
END PROCEDURE2;
此时编译,总是出现以下错误,好不容易才解决了
Error(4,1): PLS-00103: 記号"DECLARE"が見つかりました。 次のうちの1つが入るとき: begin function package pragma procedure subtype type use <an identifier> <a double-quoted delimited-identifier> form current cursor external language 記号"begin" は続行のために"DECLARE"に代わりました。
Error(18): PLS-00103: 記号"end-of-file"が見つかりました。 次のうちの1つが入るとき: begin case declare end exception exit for goto if loop mod null pragma raise return select update while with <an identifier> <a double-quoted delimited-identifier> <a bind variable> << close current delete fetch lock insert open rollback savepoint set sql execute commit forall merge pipe
将代码修改如下形式即可
CREATE OR REPLACE
PROCEDURE PROCEDURE1 AS
begindeclarecursor emp_cursor is select EMPLOYEE_ID,salary from EMPLOYEES;
emp_record emp_cursor%rowtype;
begin open emp_cursor;
loop
fetch emp_cursor into emp_record;
exit when emp_cursor%NOTFOUND;
if emp_record.salary>2000 then
dbms_output.PUT_LINE(emp_record.EMPLOYEE_ID);
end if;
end loop;
close emp_cursor;
end;ENDPROCEDURE1;
比较两者,我才知道pl/sq过程的完整结构
导入论坛
引用链接
收藏
分享给好友
推荐到圈子
管理
举报
TAG: