为了账号安全,请及时绑定邮箱和手机立即绑定

请问该如何求oracle中的function的所有语法定义,以及注意事项?

/ 猿问

请问该如何求oracle中的function的所有语法定义,以及注意事项?

慕神8447489 2019-07-09 10:06:10

求oracle中的function的所有语法定义,以及注意事项


查看完整描述

5 回答

?
陪伴而非守候

16.自定义函数
自定义函数语法:
CREATE OR REPLACE FUNCTION 函数名
RETURN 返回值类型
IS
声明部分;
BEGIN
函数体;
RETURN 变量;
END;
函数与存储过程的区别:
(1)语法上除了创建对象的关键字不同之外,函数还多了一个RETURN关键字,它确定了该函数返回值的数据类型.
(2)存储过程可以没有返回值,但函数必须有返回值,即使发生异常也要返回.
(3)函数与标准SQL结合性更好,带OUT型参数的存储过程必须用PL/SQL方式调用,而函数均可以通过标准SQL调用.
注: (1)函数返回值只提供返回值类型,不允许有长度.
(2)使用函数必须接收返回值.
样例:
create or replace function getSal(v_empno varchar)
return number
is
v_sal number(4);
begin
select sal into v_sal from emp where empno=v_empno;
return v_sal;
end;
调用: (1) select getsal(7499) from dual;
(2) declare
v_sal number(4);
begin
v_sal:=getsal(7499);
dbms_output.put_line(v_sal);
end;
17.函数的删除
语法: DROP FUNCTION 函数名;



查看完整回答
反对 回复 2019-07-14
?
呼唤远方

create or replace function 函数名(参数)
return 返回值类型
as
定义变量
begin

函数主体

end ;

查看完整回答
反对 回复 2019-07-14
?
撒科打诨

CREATE OR REPLACE FUNCTION result_num_type_test(strValue IN VARCHAR2)

  RETURN RESULT_TBL IS

  str1 varchar2(200);

  str2 varchar2(200);

  i    number := 0;

  j    number := 0;

  tb_o RESULT_TBL;

BEGIN

  i := length(strValue);

  IF i = 5 THEN

    SELECT a.new_code_no, a.new_name_all

      INTO str1, str2

      FROM TEMP_NEW_CODE A

     WHERE A.NEW_CODE_NO = strValue;

  ELSIF i = 4 THEN

    SELECT t.new_code_no, t.new_name_all

      INTO str1, str2

      FROM (SELECT a.new_code_no, a.new_name_all, ROWNUM rn

              FROM TEMP_NEW_CODE A

             WHERE A.New_Code_No like '%' || strValue || '%'

             ORDER BY A.NEW_CODE_NO) t

     WHERE t.rn = 2;

  ELSE

    SELECT a.new_code_no, a.new_name_all

      into str1, str2

      FROM TEMP_NEW_CODE A

     WHERE A.NEW_CODE_NO = strValue;

  END IF;

  tb_o.EXTEND;

  tb_o(tb_o.COUNT) := split_arr(cod >= str1, nam >= str2);

  RETURN tb_o;

END result_num_type_test;

 


查看完整回答
反对 回复 2019-07-14
?
HUX布斯

create or replace function Fun_Multiplicative(v_input in number) return number is
v_result number(8);
v_total number(8) :=1;
v_count number(5) :=1;
begin
while v_count <= v_input loop
v_total := v_total * v_count;
v_count := v_count + 1;
end loop;
v_result := v_total;
return(v_result);
end Fun_Multiplicative;



查看完整回答
反对 回复 2019-07-14
?
MYYA

create or replace function my_fun return number is
i number := 1;
total number := 1;
begin
while i<=20 loop
total := total*i;
i := i+1;
end loop;
return total;
end my_fun;



查看完整回答
反对 回复 2019-07-14

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信