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;