很简单的PROCEDURE 取值问题,相信大家都会。
下面这个例子,如果row_syain存有多个值的话如何把他们拼成字符串赋给变量outStr??在线等待大侠CREATE OR REPLACE PROCEDURE NHKDATA.GETSYAININFO(
    i_cid        IN  SYAIN.KIGYO_CODE%TYPE,
    i_uid        IN  SYAIN.IDCODE%TYPE,
    o_username   OUT VARCHAR2,
    outStr       OUT VARCHAR2
)IS
    row_syain  SYAIN%rowtype;
    CURSOR cur_syain(
        ic_cid SYAIN.KIGYO_CODE%TYPE,
        ic_uid SYAIN.IDCODE%TYPE
    ) IS
        SELECT *
          FROM SYAIN
         WHERE IDCODE     = ic_uid AND
               KIGYO_CODE = ic_cid;
BEGIN
    OPEN cur_syain(i_cid,i_uid); 
    FETCH cur_syain INTO row_syain;    IF cur_syain%NOTFOUND THEN
        outStr := '0';
        CLOSE cur_syain; 
        RETURN;
    END IF;
    o_username     := row_syain.NAME;
    outStr         := '1';
    CLOSE cur_syain;
    RETURN;
EXCEPTION
    WHEN OTHERS THEN
    RETURN;END GETSYAININFO;

解决方案 »

  1.   

    row_syain是rowtype,你具体指哪个列可能有多个值,然后想把它们拼起来?
      

  2.   

    哦,可能我说得不好理解,就是row_syain中有好几行值,我怎么样在把他们取出来??只有一行值的话可以
    := row_syain.NAME; 
    这么取,可是有多行值呢?
      

  3.   

    多行也是:= row_syain.NAME;
    你不是用了游标吗?它每次处理一行。
    o_username:=o_username||row_syain.NAME; 
      

  4.   

    CREATE OR REPLACE PROCEDURE NHKDATA.GETSYAININFO( 
        i_cid        IN  SYAIN.KIGYO_CODE%TYPE, 
        i_uid        IN  SYAIN.IDCODE%TYPE, 
        o_username  OUT VARCHAR2, 
        outStr      OUT VARCHAR2 
    )IS 
        row_syain  SYAIN%rowtype; 
        CURSOR cur_syain( 
            ic_cid SYAIN.KIGYO_CODE%TYPE, 
            ic_uid SYAIN.IDCODE%TYPE 
        ) IS 
            SELECT * 
              FROM SYAIN 
            WHERE IDCODE    = ic_uid AND 
                  KIGYO_CODE = ic_cid;
        flag NUMBER := 0;
    BEGIN 
        o_username := ' ';
        OPEN cur_syain(i_cid,i_uid); 
        LOOP
           FETCH cur_syain INTO row_syain; 
           EXIT WHEN cur_syain%NOTFOUND;
           o_username    := o_username||row_syain.NAME; 
           flag          := flag + 1;
        END LOOP;
        outStr := to_char(flag);
        CLOSE cur_syain; 
        --RETURN; 
    EXCEPTION 
        WHEN OTHERS THEN 
          RAISE;
        --RETURN; END GETSYAININFO;