日期:2014-05-16  浏览次数:20509 次

浅入浅出存储过程

在合作开发前还是把在做牛腩发布系统过程中, 复习到的数据库的知识,,曾经单粒的沙子打包进去好 。所以把存储过程入包.。

简单的来说存储过程,就是一个sql语句的结合,存储过程和sql语句没有区别,就是把多条sql语句封装起来了,成为我们程序中独立功能模块。

百度百科是这样说的,很是专业和全面:http://baike.baidu.com/view/68525.htm 所以就不赘述了。

为什么使用存储过程?因为比sql语句执行的速度快。为什么叫存储过程?存储的是一些sql的罗列,是依次执行多个sql语句的过程。

如何创建存储过程?

创建存储过程实例。

语法为:

CREATE PROCedure[owner.]procedure_name[;number]
[(parameter1[,parameter2]...[parameter255])]
[{FOR REPLICATION}|{WITH RECOMPILE}
[{[WITH]|{,}ENCRYPTION]]
AS sql_statements
实例。

-- =============================================
-- Author:		HaiFang
-- Create date: 2012-7-19
-- Description:	根据内容搜索新闻。
-- =============================================
ALTER PROCEDURE [dbo].[news_selectByContent] 
	@content varchar(1000)
AS
BEGIN
	select top 10 n.id,n.title ,n.createTime,c.[name] from news n
	inner join category c on n.caId =c.id 
	
	--查询的内容。
	where n.content like '%' + @content  + '%'
	order by n.createTime desc 
	
END

其他的编程语言如何调用存储过程? 把sql语句的名字换成存储过程的名字。

带参数的存储过程,更方便的查询。在asp.net中调用带参数的存储过程。

 // 根据新闻类别的caId取出该类别下的所有新闻。
        public DataTable SelectBycaId(string caId)
        {
            DataTable dt = new DataTable();

            //传递存储过程中的参数.
            string procName = "news_selectById";
            SqlParameter[] paras = new SqlParameter[] { new SqlParameter("@caid", caId) };

            dt = sqlhelper.ExecuteQuery(procName, paras, CommandType.StoredProcedure);

            return dt;


        }


存储过程的优点是:

1.在执行重复任务时能提高效率;

2.使前端的应用程序共享应用逻辑;

3.可以永久创建,也可以临时创建;

4.可以在SQL Server启动时自动执行。


在对表的级联操作中,触发器和存储过程都可以使用的。

我想很多人都会有这样的感觉,在看第一遍专业的文字我们往往是充满恐惧的,因为我们对未知陌生是恐惧的。虽然被专业文字的准确 生动 形象所折服, 但往往是被他吓倒,要想看懂专业文字方法有 :一是多看它几遍不一定懂,只要熟悉就好,二是仔细看的时候要把专业的"文言文"翻译成自己的"白话文", 这样才是忘不掉的,变成自己的才是忘不掉的. 

5楼zllaptx4869昨天 19:30
和触发器都是SQL语句的集合~有什么区别呢?海芳姐
Re: xhf55555昨天 20:55
回复zllaptx4869n从宏观上看,类似点:都是字母组成都是sql语句,和vb的对象相同,存储过程和触发器都是数据库的对象,存储过程像vb中的函数,触发器像是vb中的事件。从细节上看,有很多的不同点的:具体参考网站:nhttp://blog.csdn.net/madforg/article/details/7300265
Re: zllaptx486929分钟前
学习了~~回复xhf55555
4楼lilongsheng1125昨天 18:44
详细,学习……
Re: xhf55555昨天 19:30
回复lilongsheng1125n谢哈
3楼lfmilaoshi昨天 16:38
学习,就是个反复的过程。。。。米老师