当然不能这样写啦 CURSOR GET_ANTENNA_TYPE(v_baseid) IS
select NAME
from RS_WIRELESS_ANTENNA_TYPE
where ID IN (SELECT ANTENNA_TYPE_ID from RS_WIRELESS_ANTENNA WHERE BASE_ID=v_baseId);for GET_ANTENNA_TYPE_CUR (baseid) in ....
就可以了!
select NAME
from RS_WIRELESS_ANTENNA_TYPE
where ID IN (SELECT ANTENNA_TYPE_ID from RS_WIRELESS_ANTENNA WHERE BASE_ID=v_baseId);for GET_ANTENNA_TYPE_CUR (baseid) in ....
就可以了!
from RS_WIRELESS_ANTENNA_TYPE
where ID IN (SELECT ANTENNA_TYPE_ID from RS_WIRELESS_ANTENNA WHERE BASE_ID=baseId);
最后这个baseId输入了根本就没有作用,怎么回事呀?
in out <an identifier>
<a double-quoted delimited-identifier> LONG_ double ref char
time timestamp interval date binary national character nchar
Line: 10
Text: CURSOR GET_ANTENNA_TYPE(v_baseid) IS
CURSOR GET_ANTENNA_TYPE(v_baseid varchar2) IS
如果你的类似是字符型的话,其实的你就相应加上就是了!
CREATE OR REPLACE FUNCTION ANTENNA_TYPE_BY_BASE (
baseId IN VARCHAR2
) RETURN VARCHAR2
IS
ANTENNA_TYPE_STR VARCHAR(1000) := '';
BEGINBEGIN
DECLARE
CURSOR GET_ANTENNA_TYPE(v_baseid varchar2) IS
select NAME
from RS_WIRELESS_ANTENNA_TYPE
where ID IN (SELECT ANTENNA_TYPE_ID from RS_WIRELESS_ANTENNA WHERE BASE_ID=v_baseid);
BEGIN
FOR GET_ANTENNA_TYPE_CUR IN GET_ANTENNA_TYPE(baseId) LOOP
IF ANTENNA_TYPE_STR IS NULL THEN
ANTENNA_TYPE_STR := GET_ANTENNA_TYPE_CUR.NAME;
ELSE
ANTENNA_TYPE_STR := ANTENNA_TYPE_STR||'/'||GET_ANTENNA_TYPE_CUR.NAME;
END IF;
END LOOP;
END;
END;
return ANTENNA_TYPE_STR;
end ANTENNA_TYPE_BY_BASE;
直接赋上值都不好用
加上冒号!
---------- ----------
aa 1
bb 1
cc 2SQL> select * from rs_wireless_antenna;ANTENNA_TYPE_ID BASE_ID
--------------- ----------
1 1create or replace function my_test(baseid varchar2)return varchar2
is
antenna_type_str varchar2(1000);
str_name rs_wireless_antenna_type.name%type;
cursor get_antenna_type is select name
from rs_wireless_antenna_type
where id in (select antenna_type_id from rs_wireless_antenna where base_id=baseid);
begin
open get_antenna_type;
loop
fetch get_antenna_type into str_name;
exit when get_antenna_type%notfound;
antenna_type_str := antenna_type_str||'/'||str_name;
end loop;
close get_antenna_type;
return antenna_type_str;
end;
/Function created.SQL> select my_test(1) from dual;MY_TEST(1)
----------------------------------
/aa/bb