- --存储过程
- ---要创建存储过程的数据库
- USE MyTest
- if exists (select name from sysobjects where name ='sp_addInfo' and type='P')
- --删除存储过程
- Drop procedure dbo.sp_addInfo
- GO
- --创建存储过程
- create proc dbo.sp_addInfo
- --存储过程参数
- @name varchar(20),
- @sex bit,
- @class varchar(20)
- as
- begin
- --存储过程语句体
- insert into student(name,sex,class)
- values(@name,@sex,@class)
- end
- exec sp_addInfo 'QQQQ',0,'2222'
- truncate table student
- --truncate 删除表中的所有行数据,而不记录每个行删除操作,不能带条件
- /*truncate table 在功能上与不带where字句的Delete语句相同,均删除表中的所有记录
- 但 TRUNCATE TABLE 比 Delete 速度快,且使用的系统和事务日志资源少。
- Delete 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过
- 释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放
- TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用
- 的计数值重置为该列的种子。如果想保留标识计数值,请改用 Delete。如果要删除表定义及其数据,请
- 使用 Drop TABLE 语句
- 对于由 FOREIGN KEY 约束引用的表,不能使用 TRUNCATE TABLE,而应使用不带 Where 子句的
- Delete 语句
- TRUNCATE TABLE 不记录在日志中,所以它不能激活触发器
- TRUNCATE TABLE 不能用于参与了索引视图的表。
- */
- GO
- --循环插入记录的例子 --游标使用
- declare @Id int
- begin
- declare db cursor for
- select id from student3
- end
- open db
- fetch next from db into @Id
- while @@FETCH_STATUS=0
- begin
- insert into student(name,sex,class)
- select name,sex,class from student3 where id=@Id
- fetch next from db into @Id
- end
- close db
- deallocate db
- --或
- declare @name varchar(20)
- declare @sex bit
- declare @class varchar(20)
- begin
- declare db cursor local scroll for select name,sex,class from student3
- end
- open db
- fetch next from db into @name,@sex,@class
- while @@FETCH_STATUS=0
- begin
- insert into student(name,sex,class)
- values(@name,@sex,@class)
- fetch next from db into @name,@sex,@class
- end
- close db
- deallocate db
存储过程 优点:
1.存储过程允许标准组件式编程(模块化设计)
存储过程在被创建以后,可以在程序中被多次调用,而不必重新编写该存储过程的SQL语句,而且数据库专业人员可随时对存储过程进行修改,但对应用程序源代码毫无影响。因为应用程序源代码只包含存过程的调用语句,从而极大地提高了程序的可移植性。 2.存储过程能够实现快速的执行速度 如果某一操作包含大量的Transaction-SQL 代码,,或分别被多次执行,那么存储过程要比批处理的执行速度快很多,因为存储过程是预编译的,在首次运行一个存储过程时,查询优化器对其进行分析优化,并给出最终被存在系统表中的执行计划,而批处理的Transaction-SQL 语句在每次运行时都要进行编译和优化,因此速度相对要慢一些。 3.存储过程能够减少网络流量 对于同一个针对数据数据库对象的操作,如查询修改,如果这一操作所涉及到的Transaction-SQL 语句被组织成一存储过程,那么当在客户计算机上调用该存储过程时,网络中传送的只是该调用语句,否则将是多条SQL 语句从而大大增加了网络流量降低网络负载。 4.存储过程可被作为一种安全机制来充分利用 系统管理员通过,对执行某一存储过程的权限进行限制,从而能够实现对相应的数据访问权限的限制。