Oracle PL/SQL高级应用 存储过程】的更多相关文章

有名字的Plsql块,成为Oracle的对象,在以后用到时可以直接调用. CREATE OR REPLACE PROCEDURE myproc(id IN varchar2) IS -IN 为输入参数 参数不加长度 name ); --这里定义的变量必须给长度 BEGIN SELECT books_name INTO name FROM books WHERE books_id=id; DBMS_OUTPUT.PUT_LINE(name); END myproc; / 执行方法: 1.SQL>E…
触发器:存放在数据库中,并被隐含执行的存储过程. 由触发事件,触发条件,触发操作组成. DML触发器:指定触发器时机(before or after),触发事件(insert  , delete, update),表名,触发类型,触发条件,触发操作 语句触发器: create [or replace] trigger trigger_name timing event1 [or event2 ..] on table_name PL/SQL block; trigger_name 触发器名 ev…
一.异常 1.处理异常 (1)除数不为0 declare b number; begin b:; exception when zero_divide then dbms_output.put_line('除数不能为0'); end; DBMS输出:除数不能为0. (2)找不到参数 declare vename ); begin ; --此处会报no date found异常 exception when no_date_found then dbms_output.put_line('未找到任…
1. 复合数据类型--记录类型 Ø        语法格式 type  类型名 is   record ( 字段1  字段1类型 [not null]:=表达式1; 字段2  字段2类型 [not null] :=表达式2; - ) Ø        说明:记录之间相互赋值要求两个记录类型全然同样. Ø        案例 举例1 --创建表并插入记录 create table student(idnumber, name varchar2(20), birthday date); insert…
存储过程用于执行特定的操作,当建立存储过程时,既可以指定输入参数(in),也可以指定输出参数(out),通过在过程中使用输入参数,可以将数据传递到执行部分:通过使用输出参数,可以将执行部分的数据传递到应用环境.在sqlplus中可以使用create procedure命令来建立过程.实例如下:1.请考虑编写一个存储过程,可以输入雇员名,新工资,用来修改雇员的工资 --根据雇员名去修改工资CREATE PROCEDURE sp_update(uname VARCHAR2, newsal NUMBE…
一.匿名块 .使用returning ... INTO 保存增删改表数据时的一些列的值 ()增加数据时保存数据 DECLARE v_ename emp.ename%TYPE; v_sal emp.sal%TYPE; BEGIN ,,) RETURNING ename,sal INTO v_ename,v_sal; dbms_output.put_line(v_ename || ','||v_sal); end; ---打开控制台输出开关 SET serveroutput ON; ()修改数据时保…
视图: 视图叫虚表,即是在哪个表上建立的视图,将那个表的数据用一条查询sql语句查出的数据展现在该视图中,对这个视图操作就是只能对该视图中的数据进行操作,该操作也会保存在建立的表中.可以理解为表上表,视图为该表的子表. CREATE OR REPLACE VIEW myview AS --建立视图 ; --将表中符合条件的数据放入视图中 SELECT * FROM myview; --查询视图中的数据 ,); --插入数据,插入到了原表中 但视图中不存在,因为价格为23 CREATE OR RE…
游标可以处理SQL语句查询出来的结果集,进行逐条控制,其实游标在内存中申请空间,将自己指向SQL语句查询出来的结果集,有点像指针的感觉,游标使SQL更加的灵活. DECLARE CURSOR mycur IS --申请内存 SELECT * FROM books; --查出结果集 要实现对结果逐条处理 myrecord books%ROWTYPE; --准备变量 用于游标取出的数据的存储 因为取出表中所有的字段采取%ROWTYPE记 录的方式 BEGINOPEAN mycur; --打开游标结果…
在oracle10中写好了存储过程,代码如下: CREATE OR REPLACE Procedure Proc_Insert ( sName in varchar2, sAge in int, sExeTime in varchar2 ) is begin Insert into T_TEST(C_ID, C_NAME, C_AGE, C_INTIME, C_EXETIME) values(T_TEST_CID.nextval,sName,sAge, sysdate, to_date(sExe…
PL/SQL高级应用 动态SQL 在PL/SQL中,不能直接执行DDL(create,alter,drop),得使用动态SQL,当然,除了DDL,动态SQL也可以执行DML(select,insert,update,delete) 语法: EXECUTE IMMEDIATE '动态SQL语句' [INTO define_variable_list] [USING bind_argument_list]; 例子: --创建一个表 declare v_sql string(200); begin v…