首页
关于
友链
Search
1
wlop 4K 壁纸 4k8k 动态 壁纸
1,386 阅读
2
Nacos持久化MySQL问题-解决方案
895 阅读
3
Docker搭建Typecho博客
733 阅读
4
滑动时间窗口算法
706 阅读
5
Nginx反向代理微服务配置
676 阅读
生活
解决方案
JAVA基础
JVM
多线程
开源框架
数据库
前端
分布式
框架整合
中间件
容器部署
设计模式
数据结构与算法
安全
开发工具
百度网盘
天翼网盘
阿里网盘
登录
Search
标签搜索
java
javase
docker
java8
springboot
thread
spring
分布式
mysql
锁
linux
redis
源码
typecho
centos
git
map
RabbitMQ
lambda
stream
少年
累计撰写
189
篇文章
累计收到
20
条评论
首页
栏目
生活
解决方案
JAVA基础
JVM
多线程
开源框架
数据库
前端
分布式
框架整合
中间件
容器部署
设计模式
数据结构与算法
安全
开发工具
百度网盘
天翼网盘
阿里网盘
页面
关于
友链
搜索到
1
篇与
的结果
2022-12-08
Oracle 存储过程和函数
Oracle 存储过程和函数函数一般是工具性的东西。存储过程一般是一些操作。一、Oracle 自定义函数语法:Create function 函数名称 return 返回值类型 as Begin ... End 函数名称;示例:统计t_book记录数create or replace function getbookCount return number as begin declare bookNum number; begin select count(*) into bookNum from t_book; return bookNum; end; end getbookCount;函数调用set serveroutput on begin dbms_output.put_line('t_book表有:' || getbookCount() || '条记录'); end;输出结果:带参数的函数示例:create or replace function getBookSum(table_name varchar2) return number as begin declare sumCount number; count_sql varchar2(200); begin count_sql:='select count(*) from ' || table_name; execute immediate count_sql into sumCount; return sumCount; end; end getBookSum;带参函数调用set serveroutput on begin dbms_output.put_line('表有:' || getBookSum('t_booktype') || '条记录'); end;输出结果:二、Oracle 存储过程语法:Create procedure 存储过程名称 as Begin ... End 存储过程名称; In 只进不出 Out 只出不进 In out 可进可出参数In 只进不出示例:向t_book中添加数据。create or replace procedure addBook(bookname in varchar2, booktypeId in number,price in number) as begin declare maxId number; begin select max(id) into maxId from t_book; insert into t_book(id,bookname,type_id,price) values(maxId+1, bookname,booktypeId,price); commit;--自动提交 end; end addBook;存储过程调用execute 存储过程名称(参数1,参数2.。。);示例1:execute addBook('代码简洁之道',2,66);查询t_book结果:示例2:如果存在就不添加,没有记录才添加。create or replace procedure addCheckBook(boookn in varchar2, booktypeId in number,price in number) as begin declare maxId number; n number; begin select count(*) into n from t_book where bookname=boookn; if (n>0) then return; end if; select max(id) into maxId from t_book; insert into t_book(id,bookname,type_id,price) values(maxId+1, boookn,booktypeId,price); commit; end; end addCheckBook;调用存储过程execute addCheckBook('代码简洁之道2',2,66);此时已经存在,不在向t_book中添加记录。Out 只出不进示例1:返回添加记录前和添加记录后的总条数create or replace procedure addCheckBookCount(boookn in varchar2, booktypeId in number,price in number, befern out number, aftern out number) as begin declare maxId number; n number; begin select count(*) into befern from t_book; select count(*) into n from t_book where bookname=boookn; if (n>0) then return; end if; select max(id) into maxId from t_book; insert into t_book(id,bookname,type_id,price) values(maxId+1, boookn,booktypeId,price); select count(*) into aftern from t_book; commit; end; end addCheckBookCount;执行存储过程:execute用于执行单据。这里调用存储过程,需要单独调用:declare befern number; aftern number; begin addCheckBookCount('代码简洁之道3',2,66,befern,aftern); dbms_output.put_line('新增前条数:' || befern || '新增后条数:' ||aftern); end;输出结果:三、存储过程Debug1、打开调试,右键 Add debug information2、test调试, Test,然后进入调试界面。3、调试界面,输入参数4、开始调试5、查看参数鼠标放到对应参数上,即可显示当前值。四、程序包引入的目的,是为了有效的管理函数和存储过程,当项目模块很多的时候,用程序包管理就很有效了。语法:Create or replace package 包名 as 变量名称1 数据类型1; 变量名称2 数据类型2; ... ... Function 函数名称1(参数列表) return 数据类型1; Function 函数名称2(参数列表) return 数据类型2; ... ... Procedure 存储过程名称1(参数列表); Procedure 存储过程名称2(参数列表); ... ... End 包名;
2022年12月08日
137 阅读
0 评论
2 点赞