有个表T_USER = { USER_ID,PRODUCT_ID,ACCOUNT,PASSWORD,USER_NAME,ID_NUMBER }
想写一个存储过程,通过USER_ID查询它对应的所有ACCOUNT。USER_ID不是主键,也就是说一个USER_ID可能对应许多个ACCOUNT,怎么返回这些不确定个数的ACCOUNT?
百度了半天,说是用包,但还是不太明白,麻烦哪位会的具体讲一下,最好给出个代码,非常感谢。

解决方案 »

  1.   

    直接查询不可以么?
    select account from t_user where user_id = ?; -- ?是你查的id
      

  2.   

    先创建一个包,包定义一个动态游标类型create or replace package common
    istype ref_csr is ref cursor;end;
    在存储过程使用该动态游标返回结果集,如下:create or replace procedure proc_get_account
    (
      p_user_id in  number,
      p_csr     out common.ref_csr
    )isv_strsql varchar2(1000);begin
      v_strsql := 'select account from t_user where user_id = ' || p_user_id;
      open p_csr for v_strsql;
    end;
      

  3.   

    用引用游标类型返回select的结果集
    open o_cur for
    select * ....