教你玩转SQL Server存储过程
首先介绍一下什么是存储过程:存储过程就是将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来,并且这样的语句是放在数据库中的,还可以根据条件执行不同SQL语句, 那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execute,即可自动完成命令。
请大家来了解一下存储过程的语法。
create PROC [ EDURE ] procedure_name [ ; number ]
[ { @parameter data_type }
[ VARYING ] [ = default ] [ OUTPUT ]
] [ ,...n ]
[ WITH
{ RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ]
[ FOR REPLICATION ]
AS sql_statement [ ...n ]
参数:
procedure_name
新存储过程的名称。过程名必须符合标识符规则,且对于数据库及其所有者必须唯一。
要创建局部临时过程,可以在 procedure_name 前面加一个编号符 (#procedure_name),要创建全局临时过程,可以在 procedure_name 前面加两个编号符 (##procedure_name)。完整的名称(包括 # 或 ##)不能超过 128 个字符。指定过程所有者的名称是可选的。
存储过程的优点都有哪些呢?
1.存储过程只在创造时进行编译即可,以后每次执行存储过程都不需再重新编译,而我们通常使用的SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。
2.经常会遇到复杂的业务逻辑和对数据库的操作,这个时候就会用SP来封装数据库操作。当对数据库进行复杂操作时(如对多个表进行update,insert,Query,delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。可以极大的提高数据库的使用效率,减少程序的执行时间,这一点在较大数据量的数据库的操作中是非常重要的。在代码上看,SQL语句和程序代码语句的分离,可以提高程序代码的可读性。
3.存储过程可以设置参数,可以根据传入参数的不同重复使用同一个存储过程,从而高效的提高代码的优化率和可读性。
4.安全性高,可设定只有某此用户才具有对指定存储过程的使用权存储过程的种类:
(1)系统存储过程:以sp_开头,用来进行系统的各项设定.取得信息.相关管理工作,如 sp_help就是取得指定对象的相关信息。
(2)扩展存储过程 以XP_开头,用来调用操作系统提供的功能
exec master..xp_cmdshel
相关文档:
问题描述:
为管理岗位业务培训信息,建立3个表:
S (S#,SN,SD,SA) S#,SN,SD,SA 分别代表学号、学员姓名、所属单位、学员年龄
C (C#,CN ) C#,CN 分别代表课程编号、课程名称
SC ( S#,C#,G ) S#,C#,G 分别代表学号、所选修的课程编号、学习成绩
1. 使用标准SQL嵌套语句查询选修课程名称为&rsquo ......
概念:在编写安全代码时,最重要的规则之一就是“绝对不要盲目的相信用户的输入”。
利用ADO.NET 2.0的SqlConnectionStringBuilder类生成数据库连接字符串,它可以有效的防止“SQL连接字符串恶意注入”,因为这个类是专门为SQL SERVER设计的所以;它兼容旧式关键字。关于如何使用SqlConnectionS ......
折腾了我半天终于搞定了
参考了这个文章:http://doc.javanb.com/hibernate-reference-3-2-0-zh/ch16.html
final static String querySql = "select {enterprise.*}, {dict.*} ,{balancd.*}, {weightinfo.*} "
+ "from weight_info weightinfo left outer join t_dict dict on {weightinf ......
SQL Server 2005中的存储过程并发问题
我在SQL Server2005中遇到了并发问题。我持有车票的公共汽车上有一些空闲的座位。我在插入销售的查票之前,需要查看是否还有空闲的座位。我的存储过程做的事情如下所示:
create PROCEDURE add_ticket — parameters DECLARE free_seats int BEGIN TRANSACTION select free_se ......
在SQL Server开发问题中你可能会问到的十个问题:
1、什么是常见的对表和字段的名字约束?
2、有没有可能在不了解T-SQL的情况下编写存储过程?
3、T-SQL中如何比较CLR存储过程和函数的性能?
4、我如何在一个存储过程中使用另一个存储过程产生的结果?
5、我如何解决SQL Server 2005的并发问题? ......