存储过程的定义和基本操作!
2007-08-19 15:22
274 查看
这两天做一个数据管理系统,边学边做,以前写的关于数据库操作的,都没用到存储过程,这几天学会了怎么用存储过程,总算有点收获 ^_^。
下面是一个存储过程使用过程
在使用存储语句时,它包含了两种特殊的表:inserted表和Deleted表。
Inserted和deleted表主要用于触发器中。
扩展表间引用完整性
在以视图为基础的基表中插入或更新数据
检查错误并基于错误采取行动
找到数据修改前后表状态的差异,并基于此差异采取行动
Deleted表用于存储DELETE和UPDATE语句所影响的行的副本,在执行DELETE和UPDATE时,行从触发器表中删除,并传输到DELETED表中去。
INSERTED表用于存储INSERT和UPDATE语句所影响的行和副本,在一个插入或更新事务中,新建行添加到INSERTED表和触发器中。INSERTED表中的行是触发器中新行和副本,更新事务类似在删除之后执行插入。也就是行将旧行复制到DELETED表中,然后新行被复制到触发器表和INSERTED中。
下面是一个存储器过程:
表名:productInfo
字段:productID bigint 8
productName varchar (50)
create procedure pro_InsertProduct
(
@productID bigint,
@productName varchar(50)
)
as
/*对表中进行操作,SQL语句*/
/*多条件判断*/
if exists(select * from productInfo where productID =@productID )
begin
return 100
end
else
begin
return 200
end
/*当然也可以直接操作,不返回值判断*/
对存储过程执行操作赋值:
private int InsertProduct()
{
sqlConnection conn=new sqlconnection("dataSouce");
conn.open();
sqlCommand cmd=new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "proc_insertProduct";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@productID", SqlDbType.BigInt).Value = 1001;
cmd.Parameters.Add("@ProductName", SqlDbType.VarChar, 50).Value = mobile;
/*添加存储过程返回值,可以在执行语句返回该值进行判定操作*/
SqlParameter returnValue = cmd.Parameters.Add("returnValue", SqlDbType.Int, 4);
returnValue.Direction = ParameterDirection.ReturnValue;//储存过程里的返回值
cmd.ExecuteNonQuery();
int P_int_return = (int)returnValue.Value;
return P_int_return;
}
也可以在其中在进行更复杂的SQL语句操作,以完成更多要。
下面是一个存储过程使用过程
在使用存储语句时,它包含了两种特殊的表:inserted表和Deleted表。
Inserted和deleted表主要用于触发器中。
扩展表间引用完整性
在以视图为基础的基表中插入或更新数据
检查错误并基于错误采取行动
找到数据修改前后表状态的差异,并基于此差异采取行动
Deleted表用于存储DELETE和UPDATE语句所影响的行的副本,在执行DELETE和UPDATE时,行从触发器表中删除,并传输到DELETED表中去。
INSERTED表用于存储INSERT和UPDATE语句所影响的行和副本,在一个插入或更新事务中,新建行添加到INSERTED表和触发器中。INSERTED表中的行是触发器中新行和副本,更新事务类似在删除之后执行插入。也就是行将旧行复制到DELETED表中,然后新行被复制到触发器表和INSERTED中。
下面是一个存储器过程:
表名:productInfo
字段:productID bigint 8
productName varchar (50)
create procedure pro_InsertProduct
(
@productID bigint,
@productName varchar(50)
)
as
/*对表中进行操作,SQL语句*/
/*多条件判断*/
if exists(select * from productInfo where productID =@productID )
begin
return 100
end
else
begin
return 200
end
/*当然也可以直接操作,不返回值判断*/
对存储过程执行操作赋值:
private int InsertProduct()
{
sqlConnection conn=new sqlconnection("dataSouce");
conn.open();
sqlCommand cmd=new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "proc_insertProduct";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@productID", SqlDbType.BigInt).Value = 1001;
cmd.Parameters.Add("@ProductName", SqlDbType.VarChar, 50).Value = mobile;
/*添加存储过程返回值,可以在执行语句返回该值进行判定操作*/
SqlParameter returnValue = cmd.Parameters.Add("returnValue", SqlDbType.Int, 4);
returnValue.Direction = ParameterDirection.ReturnValue;//储存过程里的返回值
cmd.ExecuteNonQuery();
int P_int_return = (int)returnValue.Value;
return P_int_return;
}
也可以在其中在进行更复杂的SQL语句操作,以完成更多要。
相关文章推荐
- 存储过程的基本操作
- bo2-4.cpp设立尾指针的单循环链表(存储结构由c2-2.h定义)的12个基本操作
- MySQL存储过程常用基本操作
- 存储过程基本定义
- bo3-1-1.c 链栈(存储结构由c2-2.h定义)的基本操作(4个) 及验证
- bo3-4.c 用单链表的基本操作实现链队列(存储结构由c3-2.h定义)的基本操作(9个)
- 数据结构_图_定义/分类/顶点与边之间的关系/连通图/存储结构/基本操作
- bo2-5.cpp 带头结点的双向循环链表(存储结构由c2-4.h定义)的基本操作(14个)
- 存储过程基本概念和操作
- C#中对数据库的基本操作(增删改以及调用存储过程)
- MYSQL入门学习之十二:存储过程的基本操作
- bo2-6.cpp 具有实用意义的线性链表(存储结构由c2-5.h定义)的24个基本操作
- SQLServer存储过程基本操作
- mysql存储过程查询结果循环遍历 判断 赋值 游标等基本操作
- mysql存储过程查询结果循环遍历 判断 赋值 游标等基本操作
- Oracle数据库基本操作 (五) —— 使用java调用存储过程
- 存储过程的基本操作(SQL Server Management Studio)
- bo2-7.cpp 多项式(存储结构由c2-6.h定义)的基本操作及算法
- 【转】MYSQL入门学习之十二:存储过程的基本操作
- mysql 存储过程中变量的定义与赋值操作