当前位置: 代码迷 >> Oracle管理 >> 求解答function的有关问题
  详细解决方案

求解答function的有关问题

热度:13   发布时间:2016-04-24 05:20:17.0
求解答function的问题
我在package body中定义一个function,有一些疑问,想请教大家。

SQL code
FUNCTION xx    (        p_a    IN  NUMBER,        p_b   IN  NUMBER,        p_c         OUT NUMBER    ) RETURN NUMBER IS        v_sqlstr            VARCHAR2(100); -- SQL文    BEGIN    p_c := NULL;    v_sqlstr := 'select count(*) from tab';    EXECUTE IMMEDIATE v_sqlstr INTO p_c;    return 'ok';    WHEN OTHERS THEN        return 'fail';END xx


1,我想问一下,在调用这个function时,调用的地方能取到p_c的值么?这个function的返回值的不是‘ok’或者‘fail’吗?那如果,值把结果,赋值给局部变量,写这个function还有意义吗?
我这里有个程序是这样写的,按理说,应该是取得p_c的值呀。

2,“EXECUTE IMMEDIATE v_sqlstr INTO p_c;”如果,我在这里,把结果into给一个全局变量,可以吗?

3,如果我想在一个function内得到一个结果,并且赋值给全局变量,那么只能类似这样“EXECUTE IMMEDIATE v_sqlstr INTO p_c;”写吧?

------解决方案--------------------
函数的结构返回是ok’或者‘fail’,p_c这个值也可以取得,原因是这个p_c事输出变量(out参数)
调用xx:则会输出返回值和P_C的值
SQL code
declare v_a varchar2(10); v_b number;begin v_a:=scott.xxss(1,1,v_b); dbms_output.put_line(v_a); dbms_output.put_line(v_b);end;
  相关解决方案