日期:2014-05-17  浏览次数:20860 次

入门级的oracle存储过程的问题
今天第一天学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;



------其他解决方案--------------------
引用:
过程里面不能直接select * from emp;
必须是select * into ... from emp。

SQL code1234567891011create or replace procedure query_empas    type emp_table is table of emp%rowtype;    emps emp_table;beg……


+1
------其他解决方案--------------------
引用:
过程里面不能直接select * from emp;
必须是select * into ... from emp。



SQL code



1234567891011

create or replace procedure query_emp as    type emp_table is table of emp%rowtype;     emps emp_tabl……

+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不同要实现返回记录集必须使用游标来实现