DROP PROCEDURE {存储过程名}[,??]
例5-1 对MYDB数据库中的学生表建立一个带SELECT查询语句的存储过程: USE MYDB GO
CREATE PROCEDURE PROC1 @ PARAL CHAR(2) AS
SELECT SNO,SNAME,HEIGHT FROM STUDENT WHERE SEX=@PARAL RETURN
执行所建的过程: USE MYDB
EXECUTE PROC1 ‘女’
二、触发器的设计
触发器是一种特殊的存储过程, 用它来控制关联的表。 1、触发器的建立 语句格式:
CREATE TRIGGER 触发器名 ON {表名|视图名} [WITH ENCRYPTION]
{ {FOR |AFTER |INSTEAD OF} {[DELETE][,INSERT][,UPDATE]} [WITH APPEND] [NOT FOR REPLICATION] AS
[{ IF UPDATE(列名)[{AND|OR} UPDATE(列名)][,??]| IF (COLUMN_UPDATE()?)SQL 语句[,??] }
2、修改触发器
使用ALTER TRIGGER语句,其格式与CREATE TRIGGER语句的格式一致。 3、删除触发器
DROP TRIGGER {触发器名} 例 5-2 建立一个触发器,当有人试图向STUDENT表中添加或修改数据时,触发器发出一条消息(警告!)。
USE MYDB GO
CREATE TRIGGER MESSAGE1 ON STUDENT FOR INSRET,UPDATE AS RAISERROR(‘WARNING!’,10,1) GO
11
实验六 程序设计与小系统开发
实验目的
掌握SQL中的程序设计,了解VFP中面向对象程序设计的基本思想。
实验内容
1、顺序结构程序设计。 2、分支结构程序设计。 3、循环结构程序设计。
4、VFP中面向对象程序设计简介。 5、观看一个小系统实例。 6、设计一个图书管理系统。
实验环境
SQL环境。
实验过程
一、顺序结构程序设计
SQL中顺序结构程序包括的主要语句: * 定义变量(DECLARE等)语句;
* 无结构的语句(对库, 表等操作的语句); * 赋值语句(SET); * SELECT语句;
* BEGIN …… END语句; * WAITFOR语句;
* PRINT语句; * RETURN语句;
* 注释语句(/* …… */) 等.
例6-1: 由键盘输入一个三角形的三条边a,b,c, 编程计算该三角形的周长ZC与面积S。
SQL程序如下: /* 例6-1--SQL */
declare @a float,@b float,@c float,@zc float,@bzc float,@s float; select @a=3,@b=4,@c=5; select
@zc=@a+@b+@c,@bzc=@zc/2,@s=sqrt(@bzc*(@bzc-@a)*(@bzc-@b)*(@bzc-@c));
print ‘zc=’+str(@zc);
12
print ‘s=’+str(@s); return;
运行程序有下面两种方式: * 菜单方式:查询?执行。
* 工具方式: 单击绿色的右三角。 执行后,显示结果:S=6。
二、分支结构程序设计
SQL中分支结构程序包括的主要语句: * IF 语句;
* IF …… ELSE …… 语句; * CASE语句;
* 以上语句的嵌套形式.
例6-2: 判断输入的一个数N是否为负数, 若是, 输出”N<0”及该数. 说明: 本例是简单条件语句程序. SQL程序如下:
/* 例6-2--SQL */ declare @n float; set @n=-8; if @n<0
print 'n<0: '+str(@n); return;
执行后,显示结果:n<0: -8。
例6-3: 判断输入的一个考试分数G是否及格(>=60), 若是, 输出”GOOD!”及该分数, 否则, 输出” NOT PASS……”及该分数. 说明: 本例是复杂条件语句程序. SQL程序如下:
/* 例6-3--SQL */ declare @g float; set @g=88; if @g>=60
print 'GOOD! '+str(@G); else
print 'Not pass ......'; return;
执行后,显示结果:GOOD! 88。
例6-4: 判断输入的一个数S的符号, 若该数是为负数, SF=-1; 若为0, SF=0; 若为正数, SF=1. 输出该数S及结果SF.
说明: 本例是条件语句嵌套程序. SQL程序如下:
13
/* 例6-4--SQL */
declare @s real, @sf int; set @s=-18; if @s<0
set @sf=-1; else
if @s=0
set @sf=0; else
set @sf=1; print 's='+str(@s); print 'sf='+str(@sf); return;
执行后,显示结果: s= -18 sf= -1
例6-5: 生成一个管理系统的菜单,此处只显示菜单项对应的功能,到实际程序,只需换成执行具体的文件即可。
SQL程序如下: /* 例6-5--SQL */ declare @xm char(1); set @xm='1';
print space(20)+'学生信息管理系统'; PRINT ' ';
print space(5)+'1. 输入'+SPACE(30)+'2. 修改'; print space(5)+'3. 查询'+SPACE(30)+'4. 统计'; print space(5)+'5. 打印'+SPACE(30)+'0. 退出'; PRINT ' ';
PRINT SPACE(20)+'请选择项目(0---5): '; PRINT ' '; print (CASE @xm
WHEN '1' THEN '执行输入记录程序...'
WHEN '2' THEN '执行修改表结构与修改记录程序...' WHEN '3' THEN '执行查询程序...' WHEN '4' THEN '执行统计分析程序...' WHEN '5' THEN '执行打印程序...'
WHEN '0' THEN '本程序运行结束, 再见!' ELSE '选择有错误, 请重新选择!!' END);
14
PRINT ' '; return;
执行后,显示结果: 学生信息管理系统 1. 输入 2. 修改 3. 查询 4. 统计 5. 打印 0. 退出 请选择项目(0---5): 执行输入记录程序...
三、循环结构程序设计
例6-6: 求S1=1+2+3+……+1000 SQL程序:
/* 例6-6--SQL */
declare @k int,@s1 int; set @k=1; set @s1=0;
while (@k<=1000) begin
set @s1=@s1+@k; set @k=@k+1; end;
print 's1='+str(@s1); return;
执行后,显示结果: s1= 500500
例6-7: 求P1=1*2*3*……*20 SQL程序:
/* 例6-7--SQL */
declare @k int,@p1 decimal (30,0); set @k=1; set @p1=1; while (@k<=20) begin
set @p1=@p1*@k; set @k=@k+1;
15
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库《数据库原理》实验指导书--2011最新版 - 图文(3)在线全文阅读。
相关推荐: