Create or replace procedure sp_prople(XM_out out varchar2,sfzh_out out varchar2) as begin select XM,sfzh into XM_out,sfzh_out from person where sfzh = '441422198504062319';end;
刚开始接触存储过程 以上是我仿写的一个存储过程 我现在想去掉 select 中 where 那一部分条件 也就是说遍历表中所有的XM和sfzh,请问这个存储过程该怎么写 求教了

解决方案 »

  1.   

    遍历表所有记录 不需要存储过程
    begin
     for x in(select XM,sfzh from  person )
        loop
          --通过x.XM取得XM列值;
        end loop;
    end;
      

  2.   


    create or replace procedure sp_prople(XM_out out varchar2,sfzh_out out varchar2)
    is
    beginselect XM,sfzh into XM_out,sfzh_out from person;end sp_prople;
      

  3.   

    -- 给个例子给你: 
    -- 实例:Oracle存储过程返回数据集,并将数据集插入表CREATE table userinfo(id number(18,0), name varchar2(30), sex varchar2(10), age number(3,0), address varchar2(100));insert into userinfo(id,name,sex,age,address) values(1,'luoyoumou','男',33,'湖南省衡阳市');
    insert into userinfo(id,name,sex,age,address) values(2,'miaoxiaoming','男',32,'江西省吉安市');
    insert into userinfo(id,name,sex,age,address) values(3,'hanqiguang','男',28,'江西省赣州市');commit;create table userinfo2 as select * from userinfo where 1=2;-- i_address 是存储过程的输入参数,o_cur是存储过程的输出游标参数,用以获取返回的结果集!
    CREATE OR REPLACE PROCEDURE userinfo_proc(i_address VARCHAR2, o_cur OUT SYS_REFCURSOR)
    IS
      sqlstr VARCHAR2(200); -- 定义变量,用以存放SQL语句
    BEGIN
      sqlstr := 'SELECT Id, Name, Sex, Age, Address FROM userinfo WHERE Address = :i_address'; -- 给SQL变量赋值,其中 :i_address 是绑定变量,以提高执行效率!
      OPEN o_cur FOR sqlstr USING i_address; -- 给游标变量赋值
    END;
    /
      

  4.   

    create or replace procedure sp_prople(v_cursor out sys_refcursor)
    is
    begin
    open v_cursor for
    select XM,sfzh from person;
    end sp_prople;
    这样就OK了。刚才有点忙,没时间写。在SQLplus调用set serveroutput on;declare
    cur sys_refcursor;
    v_sm varchar2(100);
    v_sfzh varchar2(100);
    begin
    sp_prople(cur);
    --这里只给你演示一条记录
    fetch cur into v_sm,v_sfzh;
    dbms_output.putline(v_sm);
    dbms_output.putline(v_sfzh);
    end;
    /好了,下班了。打字有点快,不知道有没有错。。
      

  5.   

    存储过程不能有两个out输出 如果按照你的存储过程需求想遍历每一条记录 那想要的结果是什么 是两个字段的集合吗  存储过程的具体目的什么  如果想学习存储过程语法很简单
    create or replace procedure test(var_name_1 in type,var_name_2 out type) as--声明变量(变量名 变量类型)begin--存储过程的执行体end test;
      

  6.   


    谁告诉你存储过程不能有两个OUT?