今天第一天学oralce存储过程,刚看了一会网上找到的资料。我现在就想写一个能在emp表里查出所有记录的一段存储过程,请问我应该咋写……
我写了一段,执行不了:
create or replace procedure query_emp
as
select * from emp;
begin
query_emp;
end;
请问我应该怎么写,怎么执行……谢谢各位
------最佳解决方案--------------------
过程里面不能直接select * from emp;
必须是select * into ... from emp。
create or replace procedure query_emp
as
type emp_table is table of emp%rowtype;
emps emp_table;
begin
select * bulk collect into emps from emp;
for i in 1..emps.count loop
dbms_output.put_line(emps(i).ename
------其他解决方案--------------------
','
------其他解决方案--------------------
emps(i).job);
end loop;
end;
------其他解决方案--------------------
+1
------其他解决方案--------------------
+1
------其他解决方案--------------------
晕倒。真真正正的菜鸟。学海无涯啊,努力吧。
------其他解决方案--------------------
写法已经有人回复了。至于执行方法,procedure和function不同,function可以在SQL语句直接调用,但是procedure不可以。只能使用PL/SQL来调用。
sqlplus:
exec query_emp;
sql tools:【example toad & pl sql developer etc..】
declare
begin
query_emp('如果有参数的话');
end;
------其他解决方案--------------------
oracle 与sqlServer不同要实现返回记录集必须使用游标来实现