我是pl / sql块的新手。
当我运行以下代码时,它会显示:
ORA-24344:编译错误成功
执行代码后,它不显示输出
--Program definition: Create a procedure which will display the employees
--in descending order of employee name of the computer department
create or replace procedure proc_1(this_name in varchar2(50)) as
begin
loop
select name from enployee2 order by name desc;
commit;
select name into this_name;
end loop;
end;
variable k varchar2(50)
execute proc_1(:k);
答案 0 :(得分:2)
好的,你们有很多事情要做:
1> create or replace procedure proc_1(this_name in varchar2(50)) as
2> begin
3> loop
4> select name from enployee2 order by name desc;
5> commit;
6> select name into this_name;
7> end loop;
8> end;
在过程的第1行,您将this_name声明为varchar2(50)类型的IN参数。但是,根据程序规范,您不必指定参数的大小。所以你可以从规范中删除(50)。
在第4行,您有select语句,没有INTO子句。
在第5行,你有一个提交,但你没有在保证提交的程序中做任何工作;
在第6行,您尝试在this_name中选择名称,但您的查询没有from子句。在Oracle SQL中,不接受没有FROM的SELECT。
在第6行,您的INTO子句尝试在this_name参数中存储一个值,但它被声明为IN参数而不是OUT或IN OUT参数。
在第3行和第7行打开和关闭循环,但没有退出条件,因此循环是无限的。