前言:
关于存储过程实践一把,它是什么,有什么作用,如何使用,对于存储过程的认识也不例外;
正文:
1、是什么?
存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,其实质上就是一段存储在数据库中的代码;经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它;
2、优缺点:
3、如何用?
- 打开数据库-可编程性-存储过程
ALTER PROCEDURE [dbo].[Pro_CancelCard]
-- Add the parameters for the stored procedure here//添加需要的参数
@cardNo varchar(20),
@IsCheck varchar(20),
@status varchar(20),
@userID varchar(20),
@returnCash numeric(19, 4),
@date date,
@time time(7),
@offDate date,
@offTime time(7)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
-- 对表信息的操作
Insert into T_CancelCard (cardNo,userID,returnCash,date,time,IsCheck)values(@cardNo,@userID,@returnCash,@date,@time,@IsCheck)
Delete T_User where userID=@userID
Update T_Card set status=@status
Update T_Student set status=@status
Update T_Line set offDate =@OffDate ,offTime =@OffTime
END
4、D层调用代码:
- 书写完毕就是调用啦,以下是以退卡为例的小实践
public DataTable selectCard(Entity.CancelCardInfo cancelCardInfo)
{
SQLHelper sqlHelper = new SQLHelper();
//所用到的参数,与存储过程相对应
SqlParameter[] sqlParams = {new SqlParameter("@cardNo",CancelCardInfo.cardno),
new SqlParameter("@userID",CancelCardInfo.userID),
new SqlParameter("@returnCash",CancelCardInfo.returnCash),
new SqlParameter("@date",CancelCardInfo.Date),
new SqlParameter("@time",CancelCardInfo.Time),
new SqlParameter("@IsCheck",CancelCardInfo.IsCheck),
new SqlParameter("@status",CancelCardInfo.status),
new SqlParameter("@offDate",CancelCardInfo.offDate),
new SqlParameter("@OffTime",CancelCardInfo.offTime) };
//存储过程名称
string sqlCard = "Proc_CancelCard";
DataTable cancelCardSelect = SQLHelper.ExecuteQuery(sql, sqlParams, CommandType.StoredProcedure); //注意这里也是存储过程
return cancelCardSelect;
}
小结:
小小实践;