plsql-函数

来源:互联网 发布:mac重新安装系统好慢 编辑:程序博客网 时间:2024/06/09 20:29

CREATE OR REPLACE FUNCTION get_sal
(v_id IN emp.empno%TYPE)
RETURN NUMBER
IS
v_salary emp.sal%TYPE :=0;
BEGIN
SELECT sal INTO v_salary FROM emp WHERE empno = v_id;
RETURN (v_salary);
END get_sal;
/
验证对象
select object_name,object_type from user_objects;
查看原程序
select text from user_source;

调用函数
select get_sal(7839) from dual;
删除函数
DROP FUNCTION get_salary;
加密函数
将建立函数的文本存储为文件 c:\bk\1.TXT
C:\bk> set nls_lang=american_america.us7ascii
C:\bk>wrap iname=c:\bk\1.TXT oname=c:\bk\2.txt
SQL> @c:\bk\2.txt
select text from user_source;

建立索引用的函数
要使基于函数的索引被使用要先收集统计信息,必须基于 cbo 的优化模式。
DETERMINISTIC(确定性)要在函数的定义中指明
(意思为输入的值相同时函数的返回值也相同,如随机数发生函数,日期函数就不符合)
函数中不能含有集合函数
如果数据库的版本低,还有配置以下的初始化参数。
QUERY_REWRITE_ENABLED=TRUE
QUERY_REWRITE_INTEGRITY=TRUSTED
create or replace function f_sal
(v1 in number)
return number deterministic
as
begin
if v1<1000 then return 1;
elsif v1<2000 then return 2;
else return 3;
end if;
end;
/
create index i1 on emp(f_sal(sal));
select * from emp where f_sal(sal)=1;
原创粉丝点击