重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
create or replace function f(d number)
创新互联专注于清徐企业网站建设,响应式网站,电子商务商城网站建设。清徐网站建设公司,为清徐等地区提供建站服务。全流程按需定制设计,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务
return varchar
is
begin
return substr(d,instr(d,'.')+1);
end f;
select f(12.34) from dual;
基本概念
存储过程和存储函数相当于一个东西。
存储过程在Oracle里叫procedure。
存储过程没有返回值。
存储函数在Oracle里叫function。
存储函数有返回值。
基本语法
create or replace procedure 名字
--create or replace 意思是创建或者替换
as
--可以在此定义参数
begin
语句;
end;
例:
create or replace procedure sayhello
as
--说明 相当与declare
begin
dbms_output.put_line('Hello World');
end;
基本调用
begin
-- Call the procedure
sayhello;
sayhello;
sayhello;
end;
带参数的存储过程--查询某个员工的年收入
create or replace procedure upmoney(testname in test_procedure.name%type)
as
begin
update test_procedure t set t.money = t.money + 1000
where t.name = testname;
end
upmoney;
特别的地方,参数要指明是输入参数还是输出参数。
存储函数
create or replace function Fupmoney(tname in varchar2) return number
as --定义月薪参数
tmoney test_procedure.money%type;
begin
--得到月薪
select t.money
into tmoney
from test_procedure t
where t.name = tname;
dbms_output.put_line(tmoney*12);
return(tmoney*12);
end;
创建一个多输出参数的存储函数例子
create or replace procedure manyparm(tname in varchar2,
tjob out varchar2,
tmoney out number,
tdept out varchar2)
is
begin
select t.job,t.money,t.dept
into tjob,tmoney,tdept
from test_procedure t
where t.name = tname;
end manyparm;
你这是无返回类型啊。
应该这么写试试。
create or replace function fu_pr02 return varchar2 as ----创建函数fu_pr02
2 number is yearsal number(7,2);---定义自变量yearsal
3 begin
4 select sal*12+nvl(comm,0)*12 into yearsal from emp where ename='WARD';--查询用户名叫wade的年薪并赋值给yearsal
5 return yearsal;
6 end;
create or replace
FUNCTION "函数名"
(
A in number,
B in number,
name in VARCHAR2
)
BEGIN
insert into 表名 values(A+B,name);
END 函数名;
//花括号里边就是需要传的参数,name如果是固定的可以直接写死,就不用传参了