注:
oracle中表名 / 函数名 / 字段名 长度不能超过30个字符;
mysql中表名 / 字段名 长度不能超过64个字符;
sqlserver中表名 / 字段名 长度不能超过128个字符;
db2中表名 / 字段名 长度不能超过128个字符;
postgresql中表名 / 字段名 长度不能超过128个字符;
1.创建一个简单的函数
--创建函数语句
create or replace function f1
return varchar2
as
begin
return '测试';
end;
-- 查询函数语句
select f1() from dual;
–查询函数返回结果
2.创建一个带参的简单函数
---接受参数的函数
create or replace function f2(p_w varchar2)
return varchar2
as
v_f char(2); --声名的两个变量
v_a varchar2(500);
begin
--判断是否有数据,没有数据则返回null
if p_w is null then
return null;
end if;
if length(p_w)=0 then
return null;
end if;
--截取第一个字符,substr('要操作的字符串',截取起始位置[oracle中下标是从1开始],要截取几个字符)是oracle的字符串的截取函数
v_f :=substr(p_w,1,2);
--取剩余的字符
v_a:=substr(p_w,3);
v_a:=lower(v_a); --转成小写
v_f:=upper(v_f); --转成大写
v_a:=v_f||v_a; --把处理过的两个变量拼接并赋值给在开头处声名的变量
return v_a; -- 返回值
end;
--查询函数
select f2('ceshi') from dual;
3. 创建一个带参数的简单函数
create or replace function f3(num1 in number,num2 in number) -- in 表示可以赋值
return number
as
num3 number;
num4 number;
num5 number;
begin
num3 := num1+num2;
num4 := num3*num1;
num5 := num4 - num2;
return num5;
end;
select f3(5,3) from dual;
4.结合数据库表创建一个简单的函数
(oracle中开发人员写自己的sql function时,入口参数名不要与select中table的字段名重复,否则虽然编译能正常通过,但运行的结果有可能产生错误。)
create or replace function get_Dict_Name_By_Code(dict_code varchar2)
return varchar2 is dict_name varchar2(256);
begin
select
t.hdict_name into dict_name
from
HOSP_DICT t
where
t.hdict_code = dict_code;
return dict_name;
end;
-- 查询函数
select get_Dict_Name_By_Code('CV04.10.022') from dual;
5.创建函数的模型
create or replace function name(param varchar2,param2 number) -- name:你的函数名称;param和param2为两个参数
return varchar2 / number / ... --函数返回值类型
is result varchar2(256) / number / ... ; --声名返回值名称及数据类型
begin
... --函数方法体
return result; --返回声名的变量值
end;