学习目标:
1、了解Java的历史
2、为什么要学习Java语言
3、端正学习态度
学习过程:
一、存储过程
在大型数据库系统中,存储过程和触发器具有很重要的作用。无论是存储过程还是触发器,都是SQL 语句和流程控制语句的集合。就本质而言,触发器也是一种存储过程。存储过程在运算时生成执行方式,所以,以后对其再运行时其执行速度很快。SQL Server 2005 不仅提供了用户自定义存储过程的功能,而且也提供了许多可作为工具使用的系统存储过程。
创建过程的语法:
CREATE [OR REPLACE] PROCEDURE
IS|AS
BEGIN
[EXCEPTION
END;
过程参数的三种模式:
示例:
1、定义存储过程
--1、根据商品的类别统计商品的数量 create or replace procedure count_goods_bytype( tid in int,gcount out int ) as --声明变量 begin select count(*) into gcount from goods where type_id=tid; end;
2、调用存储过程
--如何调用存储过程 declare gnum int; begin count_goods_bytype(1,gnum); dbms_output.put_line(gnum); end;
3、返回值是游标
3.1、定义一个包,保存游标变量
create or replace package my_first_pack as type my_cus is ref cursor; end;
3.2、定义存储过程
--根据商品名称查询商品的信息 create or replace procedure goods_types_my(gname in varchar2,goodes out my_first_pack.my_cus) as begin open goodes for select * from goods where goods_name like gname; end;
二、动态 SQL
动态 SQL 是指在PL/SQL程序执行时生成的 SQL 语句,编译程序对动态 SQL 不做处理,而是在程序运行时动态构造语句、对语句进行语法分析并执行,DDL 语句命令和会话控制语句不能在 PL/SQL 中直接使用,但是可以通过动态 SQL 来执行。
执行动态 SQL 的语法:
EXECUTE IMMEDIATE dynamic_sql_string
[INTO define_variable_list]
[USING bind_argument_list];
示例:
--动态sql --写一个存储过程,用于统计表的行数 create or replace procedure counttable(tablename in varchar2,tablecount out int) as my_sql varchar(100); begin my_sql:= 'select count(*) from '||tablename; --动态执行 execute immediate my_sql into tablecount; end;