原文地址:http://blog.csdn.net/yulichao/archive/2006/11/23/1408760.aspx
每个人都知道数据库在现代软件开发中所处的地位。无论B\S还是C\S,都以操作数据库为底层核心,软件实现的无非就是怎么组织数据的查询、计算与表示,实现自己的逻辑功能而已。 当然,这里所说的数据库指的是关系数据库,所以操作数据库的工具就是SQL。很多初学者都会在自己的数据库操作模块中将一个SQL string传递给数据库,再接受返回的值加以操作。这样做至少有以下几个缺点: 修改这个SQL时不得不修改程序源代码,并重新进行编译。 查询速度不理想。这是因为数据库查询引擎每执行一条SQL语句,都要进行优化、编译,再执行。 安全问题。由于SQL string只是一个字符串,所以对查询所涉及参数并没有类型检查,这样就给SQL诸如留下了空子。 而上面这些缺点,恰恰是存储过程的优点。存储过程是一组存储在数据库服务器上的预编译的SQL语句。存储过程通常是由SQL语句和控制语言组合构成,其中的控制语言随数据库供应商的不同而有区别。并不是所有的数据库系统都支持存储过程。据我所知,微软Access中的Jet引擎就不支持存储过程,MySQL5之前的版本