函数 sum() count() max() min()...
自定义函数 类似存储过程
可以放在查询语句中
存储过程 与函数不同
存储过程用来完成特定的数据操作(修改、删除、ddl语句)
函数一般用来完成某个计算返回一个结果
函数必须要有一个返回值 存储过程可有可无
存储过程 要单独调用 exec plsql 存储过程 进行调用
函数可以使用sql语句调用 也可以使用 PLSQL调用
select to_char(sysdate) from dual;
函数的语法定义
create or replace function 函数名
(
arg mode datatype,
参数类型 也是三种 in out in out
return 返回值的数据类型(number,varchar2)
)
is/as
begin
end;
自定义求和函数
函数可不可以输出多个结果?
自定义函数 类似存储过程
可以放在查询语句中
存储过程 与函数不同
存储过程用来完成特定的数据操作(修改、删除、ddl语句)
函数一般用来完成某个计算返回一个结果
函数必须要有一个返回值 存储过程可有可无
存储过程 要单独调用 exec plsql 存储过程 进行调用
函数可以使用sql语句调用 也可以使用 PLSQL调用
select to_char(sysdate) from dual;
函数的语法定义
create or replace function 函数名
(
arg mode datatype,
参数类型 也是三种 in out in out
return 返回值的数据类型(number,varchar2)
)
is/as
begin
end;
自定义求和函数
函数可不可以输出多个结果?
return in out out 理论上可以
create or replace function getResult
(
a in number,
b in number
)
return number
is
c number(4);
begin
c:=a+b;
return c;
end;
select getResult(3,5) from dual;
--创建一个函数,需要传入empno去查询 这个人的工资
--通过sql语句调用
create or replace function getSal
(
fempno in number
)
return number
is
fsal number;
begin
select sal into fsal from emp where empno=fempno;
return fsal;
end;
select getSal(7369) from dual;
select * from emp
--通过PLSQL调用
declare
sal emp.sal%type;
begin
sal:=getSal(7369);
dbms_output.put_line(sal);
end;
--创建函数通过传入员工姓名,输出部门名 select * from emp select * from dept
create or replace function getDepartmentName
(
e_name varchar2
)
return varchar2
is
departmentName varchar2(20);
begin
select dname into departmentName from dept where deptno=(select deptno from emp where ename=e_name);
return departmentName;
end;
--sql
select getDepartmentName('SMITH') from dual;
--plsql
declare
d_name varchar2(20);
begin
d_name:=getDepartmentName('SMITH');
dbms_output.put_line(d_name);
end;