zoukankan      html  css  js  c++  java
  • Oracle编程脚本记录

    --命令窗口查询
    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('103','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('103','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='1' 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;
  • 相关阅读:
    禅道导出的CSV文件打开为乱码的解决方法
    谈谈微信支付曝出的漏洞
    阿里云ACE深圳同城会 开始报名
    CSS 埋点统计
    How to use “svn add” recursively in Linux shell?
    Java反序列化漏洞执行命令回显实现及Exploit下载
    在线测试 ssl 安全性
    检测一下你的专业指数:2015年十大测试工具你认识几个?
    nginx用户认证配置( Basic HTTP authentication)
    FTP基础知识 FTP port(主动模式) pasv(被动模式) 及如何映射FTP
  • 原文地址:https://www.cnblogs.com/tfl-511/p/5976967.html
Copyright © 2011-2022 走看看