网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
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教程,数据库安全,数据库文摘
本月文章推荐
.sa登陆失败 SQL Server错误18456.
.一个比较好的分页存储过程.
.您的SQL Server应用程序查询正在.
.分析及解决SQLServer死锁问题.
.sql server 2000中的触发器使用.
.SQL Server日志文件总结及日志满.
.精妙SQL语句收集.
.实例讲解分区表的可用性及相关错.
.sql server 2005扩充技巧.
.某些 SQL Server 2000 和 SQL Se.
.用SQL Server Everywhere保存离线.
.异构数据库之间的导入导出.
.SQL中通配符、转义符与括号的使用.
.讲解Informix安全特性保护数据的.
.SQL Server 2005 Express附加(At.
.数据库中为什么会出现_WA_Sys_开.
.SQL Server 2005数据加密技术应用.
.如何将数据仓库与系统体系结构合.
.用一条SQL实现:一行多个字段数据.
.项目开发中层次结构存储的两种设.

带你快速了解“存储过程”的定义及优点

发表日期:2008-3-12


“存储过程”的定义及优点

存储过程

sql语句执行的时候要先编译,然后执行。存储过程就是编译好了的一些sql语句。应用程序需要用的时候直接调用就可以了,所以效率会高。

存储过程介绍

存储过程是由流控制和SQL语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,应用程序使用时只要调用即可。在ORACLE中,若干个有联系的过程可以组合在一起构成程序包。

使用存储过程有以下的优点:

* 存储过程的能力大大增强了SQL语言的功能和灵活性。存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的 运算。

* 可保证数据的安全性和完整性。

# 通过存储过程可以使没有权限的用户在控制之下间接地存取数据库,从而保证数据的安全。

# 通过存储过程可以使相关的动作在一起发生,从而可以维护数据库的完整性。

* 再运行存储过程前,数据库已对其进行了语法和句法分析,并给出了优化执行方案。这种已经编译好的过程可极大地改善SQL语句的性能。 由于执行SQL语句的大部分工作已经完成,所以存储过程能以极快的速度执行。

* 可以降低网络的通信量。

* 使体现企业规则的运算程序放入数据库服务器中,以便:

# 集中控制。

# 当企业规则发生变化时在服务器中改变存储过程即可,无须修改任何应用程序。企业规则的特点是要经常变化,如果把体现企业规则的运算程序放入应用程序中,则当企业规则发生变化时,就需要修改应用程序工作量非常之大(修改、发行和安装应用程序)。如果把体现企业规则的 运算放入存储过程中,则当企业规则发生变化时,只要修改存储过程就可以了,应用程序无须任何变化。

数据库存储过程的实质就是部署在数据库端的一组定义代码以及SQL。

利用SQL的语言可以编写对于数据库访问的存储过程,其语法如下:

CREATE PROC[EDURE] procedure_name [;number] 
[ 
{@parameter data_type} ][VARYING] [= default] [OUTPUT] 
] 
[,...n] 
[WITH 
{ 
RECOMPILE 
| ENCRYPTION 
| RECOMPILE, ENCRYPTION 
} 
] 
[FOR REPLICATION] 
AS 
sql_statement [...n]

[ ]内的内容是可选项,而()内的内容是必选项,

例: 若用户想建立一个删除表tmp中的记录的存储过程Select_delete可写为:

Create Proc select_del As 
Delete tmp 

例:用户想查询tmp表中某年的数据的存储过程

create proc select_query @year int as 
select * from tmp where year=@year

在这里@year是存储过程的参数

例:该存储过程是从某结点n开始找到最上层的父亲结点,这种经常用到的过程可以由存储过程来担当,在网页中重复使用达到共享。

空:表示该结点为顶层结点

fjdid(父结点编号) 

结点n 非空:表示该结点的父亲结点号

dwmc(单位名称)

CREATE proc search_dwmc @dwidold int,@dwmcresult varchar(100) output 
as 
declare @stop int 
declare @result varchar(80) 
declare @dwmc varchar(80) 
declare @dwid int 
set nocount on 
set @stop=1 
set @dwmc="" 
select @dwmc=dwmc,@dwid=convert(int,fjdid) from jtdw where id=@dwidold 
set @result=rtrim(@dwmc) 
if @dwid=0 
set @stop=0 
while (@stop=1) and (@dwid<>0) 
begin 
set @dwidold=@dwid 
select @dwmc=dwmc,@dwid=convert(int,fjdid) from jtdw where id=@dwidold 
if @@rowcount=0 
set @dwmc="" 
else 
set @result=@dwmc+@result 
if (@dwid=0) or (@@rowcount=0) 
set @stop=0 
else 
continue 
end 
set @dwmcresult=rtrim(@result) 

使用exec pro-name  [pram1 pram2.....]
上一篇:在SQL Server 2005中实现异步触发器架构 人气:1341
下一篇:SAVEPOINT和ROLLBACK TO SAVEPOINT语法 人气:1173
浏览全部存储过程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐