存储过程
- 格式:ppt
- 大小:334.50 KB
- 文档页数:21


《数据库实验》实验报告
实验项目:存储过程与触发器的应用
班 级:
学 号:
姓 名:
实验日期: 11.11.07-11.11.14
成 绩:
台州学院计算机系
数据库实验报告
- 1 - 一、实验目的
1、掌握创建存储过程的方法和步骤;
2.掌握存储过程的使用方法;
3.掌握创建触发器的方法和步骤;
4.掌握触发器的使用方法。
二、实验内容
1、存储过程的创建、执行和删除;
2、触发器的创建、执行和删除。
三、实验步骤
1、存储过程的创建、执行和删除。
1)使用S_C数据库中的S表、C表、SC表创建一个带参数的存储过程—cjjicx。该存储过程的作用是:当任意输入一个学生的姓名时,将从三个表中返回该学生的学号、选修的课程名称和课程成绩。
cjjicx的创建语句:
CREATE PROCEDURE cjjicx
@name Varchar(8)
AS
BEGIN
SELECT S.sno,cname,grade
from S,C,SC
WHERE S.sno = SC.sno and o = o and S.sname =@name
end
GO
2)执行cjjicx存储过程,查询“刘晨”的学号、选修课程和课程成绩。
执行语句:
EXEC cjjicx '刘晨'
结果描述:
3)使用系统存储过程sp_helptext查看存储过程cjjicx的文本信息。
查看结果描述:
数据库实验报告
- 2 - 4)使用S-C数据库中的S表,为其创建一个加密的存储过程—jmxs。该存储过程的作用是:当执行该存储过程时,将返回计算机系学生的所有信息。
jmxs创建语句:
CREATE PROCEDURE jmxs
with encryption
mysql存储过程
MySQL 5.0 版本开始⽀持存储过程。
存储过程(Stored Procedure)是⼀种在数据库中存储复杂程序,以便外部程序调⽤的⼀种数据库对象。
存储过程是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,⽤户可通过指定存储过程的名字并给定参数(需要时)来调⽤执⾏。
存储过程思想上很简单,就是数据库 SQL 语⾔层⾯的代码封装与重⽤。优点存储过程可封装,并隐藏复杂的商业逻辑。存储过程可以回传值,并可以接受参数。
存储过程⽆法使⽤ SELECT 指令来运⾏,因为它是⼦程序,与查看表,数据表或⽤户定义函数不同。
存储过程可以⽤在数据检验,强制实⾏商业逻辑等。缺点存储过程,往往定制化于特定的数据库上,因为⽀持的编程语⾔不同。当切换到其他⼚商的数据库系统时,需要重写原有的存储过程。存储过程的性能调校与撰写,受限于各种数据库系统。⼀、存储过程的创建和调⽤存储过程就是具有名字的⼀段代码,⽤来完成⼀个特定的功能。创建的存储过程保存在数据库的数据字典中。
创建存储过程
CREATE
[DEFINER = { user | CURRENT_USER }]
PROCEDURE sp_name ([proc_parameter[,...]])
[characteristic ...] routine_body
proc_parameter:
[ IN | OUT | INOUT ] param_name type
characteristic:
COMMENT 'string'
| LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
routine_body:
Valid SQL routine statement
达梦数据库存储过程及存储过程调⽤
/***Manager***/CREATE OR REPLACE PROCEDURE "GZAPP_09"."SP_OLAP_V_BUILDINGTYPE"("P_DATE" IN DATE)
AUTHID DEFINER
IS
/*=============================================================
*功能说明:房屋类型分析(⾼层楼宇,多层楼宇,临时棚屋,其它)
* 统计市级别,⾏政区,街镇,居委会
* ⼊⼝参数:统计时间
* 出⼝参数:⽆
* 创建⼈及时间: dfb 20160922
* 修改⼈及时间:
*============================================================*/
v_sqlcode number;
v_sqlerrm varchar2(4000);
v_begintime varchar2(20);
v_endtime varchar2(20);
v_fwdlx varchar2(10);
v_sql varchar2(5000);
BEGIN
v_begintime:=to_char(sysdate,'yyyy/mm/dd hh24:mi:ss');
EXECUTE IMMEDIATE 'TRUNCATE TABLE TN_OLAP_V_BUILDINGTYPE_TMP1';
delete from OLAP_V_BUILDINGTYPE;
commit;
insert into TN_OLAP_V_BUILDINGTYPE_TMP1(
TJQY,
QYDM,
FWLX01 ,
FWLX02 ,
FWLX03 ,
FWLX04 )
SELECT TJQY,
qydm,
FWLXGCLY FWLX01,--⾼层楼宇类型栋数
FWLXDCLY FWLX02,--低层楼宇类型栋数
FWLXLSPW FWLX03,--临时棚屋类型栋数
题目1
1、学校图书馆借书信息管理系统建立三个表:
学生信息表:student
字段名称 数据类型 说明
stuID char(10) 学生编号,主键
stuName Varchar(10) 学生名称
major Varchar(50) 专业
图书表:book
字段名称 数据类型 说明
BID char(10) 图书编号,主键
title char(50) 书名
author char(20) 作者
借书信息表:borrow
字段名称 数据类型 说明
borrowID char(10) 借书编号,主键
stuID char(10) 学生编号,外键
BID char(10) 图书编号,外键
T_time datetime 借书日期
B_time datetime 还书日期
请编写SQL语句完成以下的功能:
1) 查询“计算机”专业学生在“2007-12-15”至“2008-1-8”时间段内借书的学生编号、学生名称、图书编号、图书名称、借出日期;参考查询结果如下图所示:
2) 查询所有借过图书的学生编号、学生名称、专业;参考查询结果如下图所示:
3) 查询借过作者为“安意如”的图书的学生姓名、图书名称、借出日期、归还日期;参考查询结果如下图所示:
4) 查询目前借书但未归还图书的学生名称及未还图书数量;参考查询结果如下图所示:
附加:建表语句:
USE master
GO
/*$$$$$$$$$$$$$建库$$$$$$$$$$$$$$$$$$$$$$$$*/
--检验数据库是否存在,如果为真,删除此数据库--
IF exists(SELECT * FROM sysdatabases WHERE name='BOOK')
DROP DATABASE BOOK
GO
CREATE DATABASE BOOK
GO
--建数据表--
USE BOOK
GO
CREATE TABLE student --学生信息表