您的位置:首页 > 其它

存储过程的定义和基本操作!

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语句操作,以完成更多要。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: