--命令窗口查询
exec 存储名、包名、视图;
select 函数名 from dual; create or replace procedure PR_test is
begin
--存储过程的代码
Dbms_Output.put_line('这是输出的一句话');
--serveroutput 系统设置项 是否在命令窗口打开 默认是 off,
--set serveroutput on; 打开系统输出为on
--只针对当前命令窗口有效
end PR_test; --带参数存放
create or replace procedure pr_test01(sno in varchar2,cno in varchar2,degree in number,msg out varchar2) is
begin
--数据插入
insert into score values(sno,cno,degree);
commit;
Dbms_Output.put_line('插入成功');
degree:=1; --代表执行成功
--给变量赋值
msg:='执行成功';
end pr_test01; create or replace procedure PR_test02 is
--定义变量
msgl varchar2(100)
begin
--调用其他存储过程
pr_test01('','3-204',98,msgl);
Dbms_Output.put_line(msgl);
end pr_test02 --条件判断
create or replace procedure PR_test02 is
--定义变量
msgl varchar2(100);
deg number(4,2):=0;
begin
deg:=98;
--调用其他存储过程
pr_test01('','3-204',deg,msgl);
Dbms_Output.put_line(msgl);
Dbms_Output.put_line(deg);
--条件判断
if(deg=1)then
Dbms_Output.put_line('deg=1 代表执行成功');
else
Dbms_Output.put_line('deg!=1 代表执行失败');
end if;
end pr_test02; --自定义函数
--自定义必须要有返回值
create or replace function pr_fun(tablename in varchar2) return number is
rtn number :=0 ;
begin
--获取学生表的记录条数
select count(1) into rtn from student s;
dbms_output.put_line('记录条数 rtn='||rtn);
--不能执行数据修改
--动态SQL语句
EXECUTE IMMEDIATE'select count(1) into rtn from '||tablename into rtn; --into 是把查询语句的结果赋值给变量
'insert into student value (:1,:2)'using; --using只能使用在into后面,并且针对DML使用,using 是把变量的值传入语句中对应的:1,:2....
return(rtn);
exception when others then --异常处理,放在最后的语句
dbms_output.put_line('发生异常')
end pr_fun; --包
--包体
create or replace package body pg_test is --包体:存放程序,私有的
--定义存储过程
procedure PR_test is
begin
--存储过程的代码
Dbms_Output.put_line('这是输出的一句话');
--修改数据
update student set ssex='' where ssex='男';
commit;--提交数据修改
Dbms_Output.put_line('测试包的存储过程');
end PR_test;
end pg_test; --触发器源码
create or replace trigger tg_test
after insert or update or delete
on STUDENT --每次对student进行增加,修改,删除便会触发记录日志的程序
for each row
declare
-- 定义变量
msg varchar2(200);
begin
--触发代码
msg:='触发器'; --记录日志的程序
--判断操作类型
case
when inserting then
insert into log values (sq_log.nextval,'student',sysdate,'对表进行添加数据 新数据主键= '||:new.sno);
when updating then
insert into log values (sq_log.nextval,'student',sysdate,'对表进行修改数据 新数据主键='||:old.sno);
when deleting then
insert into log values (sq_log.nextval,'student',sysdate,'对表进行删除数据 新数据主键='||:old.sno);
end case;
end tg_test;

最新文章

  1. 数据分布转换:非正态 -> 正态
  2. .net 已知图片的网络路径,通过浏览器下载图片
  3. NSQ:分布式消息队列学习记录
  4. N皇后回溯解法 leetcode N-Queens
  5. (ASP.net)利用Application对象制作简单聊天室
  6. Katana 还是Owin ? 本地自承载
  7. android 环境搭建 windows, linux
  8. Objective-C Runtime 运行时之一:类与对象(转载)
  9. iOS深入学习之Weak关键字介绍
  10. 关于Android SDK Manager无法更新的解决办法
  11. 【融云分析】 IM 即时通讯之链路保活
  12. ----Arrow functions----
  13. 异构平台同步(mysql-->oracle)
  14. $@和 $*-linux_Shell
  15. 怎样把代码复制到word中并保持颜色
  16. python find 返回元素的索引
  17. SylixOS 系统初探
  18. Java_io__BIO_NIO_AIO
  19. 笨办法学Python(十)
  20. oracle之bitmap索引

热门文章

  1. Java环境变量的简记
  2. LAMP_源码安装全教程
  3. LINQ 左右连接
  4. servlet jsp jdbc bootstrarp mvc分层模式实现的第一个项目
  5. Codeforces Round #344 (Div. 2) A. Interview
  6. RNN求解过程推导与实现
  7. bzoj 4327: JSOI2012 玄武密码
  8. bzoj4491奇技淫巧线段树
  9. 网页制作中在头部固定悬浮table表头(thead)的方法
  10. python os.path模块