就是写这个语句的存储过程:
          select  fybm  from  zf_fy  where  zf_fy.nodeid=?其中fybm 是主键   ZF_FY是表名, nodeid 是外键,怎么写这个sql查询的存储过程啊???

解决方案 »

  1.   

    用游标
    返回游标类型的 out参数
      

  2.   


    create or replace testpor(v_nodeid number,recode_cursor out sys_refcursor)
    as
    v_sqlstr varchar2(4000);
    begin 
    v_sqlstr:='select fybm from zf_fy where zf_fy.nodeid='||v_nodeid;
    open recode_cursor for v_sqlstr;
    end;
      

  3.   

    create or replace procedure testpor(v_nodeid number,recode_cursor out sys_refcursor)
    as
    v_sqlstr varchar2(4000);
    begin 
    v_sqlstr:='select fybm from zf_fy where zf_fy.nodeid='||v_nodeid;
    open recode_cursor for v_sqlstr;
    end;
      

  4.   

    呵呵··谢谢啊,编译是通过了,但调用的时候报了这个错: : ORA-06550: 第 1 行, 第 7 列: 
    PLS-00306: 调用 'TESTPOR' 时参数个数或类型错误
    ORA-06550: 第 1 行, 第 7 列: 
    PL/SQL: Statement ignored  什么意思?
      

  5.   

    调用 'TESTPOR' 时参数个数或类型错误这不是写的挺清楚了。 你是怎么调用的?
      

  6.   

    create or replace procedure testpor(v_nodeid number,recode_cursor out sys_refcursor)
    as
    v_sqlstr varchar2(4000);
    begin  
    v_sqlstr:='select fybm from zf_fy where zf_fy.nodeid='''||v_nodeid||'''';
    open recode_cursor for v_sqlstr;
    end;
    试试这样
      

  7.   

    create or replace procedure testpor(v_nodeid number,recode_cursor out sys_refcursor)
    as
    v_sqlstr varchar2(4000);
    begin  
    v_sqlstr:='select JSBH from zf_js where zf_js.nodeid='||v_nodeid;
    open recode_cursor for v_sqlstr;
    end;
      

  8.   

    调用的时候你要带个sys_refcursor
    带了么