网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > SQL技巧
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.SQL Server 2005 Express混合模式.
.在视图中使用ORDER BY子句.
.微软SQL Server 2008 CTP版的特性.
.教你快速掌握一些特别实用的"SQL.
.教你快速掌握一个交叉表的通用存.
.当SQL Server数据库崩溃时如何恢.
.SQL Server取得网站路径的几种方.
.谈数据库中模糊数据的输入与判别.
.可以提高数据库查询性能的反规范.
.讲解数据库中行级转换成列级的实.
.TOPN 子句与SET ROWCOUNTN 之对比 .
.SQL Server数据库超级管理员账号.
.SQL Server补丁安装常见问题.
.讲解触发器中的inserted表和dele.
.在SQL2000查询中使用XDR的例子.
.sql server 2005中的output子句.
.全文索引—CONTAINS语法.
.通过进行正规化的表格设计提升应.
.Sql server数据库备份还原另一方.
.SQL SERVER应用问题解答13例(一.

sql server 存储过程及触发器

发表日期:2007-6-4


一直都想找个时间研究一下,今天花了一天时间去实践了一下,非常有用。可以说是数据库里面的精华吧。还好我今天去弄了几下,虽说都是些简单的语句,但是最起码知道以后在项目该怎么去做了。 闲话少说。进入正题。

1.创建SQL存储过程:
   CREATE PROCEDURE stu_proc1//指定过程名
    @Sno varchar(50)  ='7000803068',//定义参数以及默认值
  AS//执行SQL语句
    select * from Student
    where Sno=@Sno
 GO

Declare @XXX声明变量
set @XXX=XXX设定变量值
同时里面也有if else while等语句不过得加上begin end

2.执行存储过程
  Execute stu_proc1 @Sno='XXX' @Sname='XXXX'

其实可以把存储过程看成一个C语言的函数。函数名是存储过程名,形参是也是里面的参数,里面还有局部变量,同时也可设定值。也可以返回值,用return语句。里面可以用到if else,while语句。但是C里面的函数功能会更大,不能等同,只能做比较。写存储过程也有点像写个函数一样。

同时在JAVA语言中也可以调用存储过程,类似C里调用函数。设定形参值。

3.JDBC中调用存储过程
 CallableStatement对象
 String sql="{call stu_proc1(?,?)}";
 String firstVal="";
 String secondVal="";
 Class.forName();
 Connection conn=DriverManager.getConnection("","","");
 CallableStatement stmt=conn.prepareCall(sql);
 stmt.setString(1,firstVal);
 stmt.setString(2,secondVal);
 ResultSet rs=stmt.executeQuery();

存储过程可以提高访问数据库的性能和速度。
触发器是一种特殊的存储过程,主要用于update,insert,delete这三种语句,主要是处理表与表之间的关联,也就是约束性吧。同时有二个表inserted(插入表),deleted(删除表)而update可以看成先删除,然后插入.比如,当要删除一个学生时,同时该学生的选课记录也是要删除的,这时可以在学生表进建个触发器就可以实现这种功能。

触发器就是可以进行关联操作,而单单SQL语句不能做到这一点。

CREATE TRIGGER StudentDelete ON [dbo].[Student]
FOR  DELETE
AS
delete from SC where SC.Sno=(select Sno from deleted)

语句形式跟存储过程是一致的,因为触发器本身就是一种存储过程.

上一篇:如何将SQLSERVER数据库备份到网络上 人气:3212
下一篇:解决SQL Server 2000在安装过程中出现文件挂起的现象 人气:9171
浏览全部sql server的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐