很简单的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;
下面这个例子,如果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;
:= row_syain.NAME;
这么取,可是有多行值呢?
你不是用了游标吗?它每次处理一行。
o_username:=o_username||row_syain.NAME;
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;