Oracle 自定义函数
Create function 函数名称 return 返回值类型 as Begin … End 函数名称;
自定义简单的函数:
定义无参数函数
create function bookCount return number as
begin
declare maxId number;
begin
select count(*) into maxId from t_book;
return maxId;
end;
end;
输出:
set serverout on;
begin
dbms_output.put_line('t_book有'|| bookCount() ||'条数据');
end;
--------------------------------------------------------
SQL> set serverout on;
SQL> begin
2 dbms_output.put_line('t_book有'|| bookCount() ||'条数据');
3 end;
4 /
t_book有3条数据
PL/SQL procedure successfully completed
定义有参数函数
create function tableCount(tableName varchar2) return number as
begin
declare recore_count number;
query_SQL varchar2(300);
begin
query_SQL :='select count(*) from'|| tableName ||'group by id';
execute immediate query_SQL into recore_count;
return recore_count;
end;
end tableCount;
begin
dbms_output.put_line('表有'|| tableCount('t_book') ||'条数据');
end;
输出:
SQL> begin
2 dbms_output.put_line('表有'|| tableCount('t_book') ||'条数据');
3 end;
4 /
表有3条数据
PL/SQL procedure successfully completed
存储过程定义:
create procedure addBook(bookName in varchar2,bookId in number)as
begin
declare maxId number;
begin
select max(id) into maxId from t_book;
insert into t_book values(maxId+1,bookName,bookId);
commit;
end;
end addBook;
execute addBook('你好啊','1');
(未完。。。。。。)