1;字符串变量例子2
给你一个完整的例子:
DECLARE
TYPE EmpCurTyp IS REF CURSOR; --定义游标类型typeof
emp_cv EmpCurTyp;
emp_rec emp%ROWTYPE; --查找一行的时候用这个 emp 这个就是表的名字
--如果要定义某个列的类型的时候,需要直接定义这种类型.如: v_tab t_clear.wlbmc%TYPE; 表示t_clear.wlbmc 表中 的某个字段的类型
sql_stmt VARCHAR2(200);
my_job VARCHAR2(15) := 'CLERK'; --这个不知道是
BEGIN
sql_stmt := 'SELECT * FROM emp WHERE job = :j'; --最好是使用这种方法的sql语句重要
OPEN emp_cv FOR sql_stmt USING my_job; -- 打开游标
LOOP
FETCH emp_cv INTO emp_rec;
EXIT WHEN emp_cv%NOTFOUND; --如果游标到了文件尾部
-- process record --对游标中的数据进行炒作
END LOOP;
CLOSE emp_cv; ---关闭游标
END;
2下面的是我们实际应用中
create or replace function f_get_proposer(proposerids in varchar2)
return varchar2
is
TYPE EmpCurTyp IS REF CURSOR;
proposer t_ro_proposer.proposer%TYPE;
proposers varchar2(500):='';
uproposerids varchar2(500):='';
sql_stmt VARCHAR2(200);
space varchar2(2):='';
--CURSOR c_dept IS select p.proposer from t_ro_proposer p where p.proposerid in('||proposerids||');
c_dept EmpCurTyp;
BEGIN
if length(proposerids)=0 or nvl(proposerids,'~')='~' then
return (space);
else
uproposerids:=trim(proposerids);
end if;
--replace('',',',''',''');
--replace(proposerids,',',''',''')
sql_stmt:='select p.proposer from t_ro_proposer p where p.proposerid in('||proposerids||')';
OPEN c_dept FOR sql_stmt ;
LOOP
FETCH c_dept INTO proposer;
EXIT WHEN c_dept%NOTFOUND;
proposers:=proposers||proposer||',';
END LOOP;
CLOSE c_dept ;
-- return (proposer);
return (proposers);
END;