为什么需要存储过程?关系数据库是基于关系模型的数据库系统,SQL是基于关系运算的声明式语言。SQL可以满足许多用户的查询需要,但是并不是所有需求都可以用声明的方式表达的。存储过程(stored procedure)属于过程式语言,“过程”的意思就是一条一条执行指令。 存储过程扩展了DBMS的能力,在数据(表,关系,relation)与用户之间提供了一层抽象。同样的功能,用sp实现相比在应用程序里实现的优点有: 与DBMS无缝集成,该功能是数据库系统的一部分,而不是与数据库割裂开。 当需要改动该功能时(修bug,或改进),只需要改sp,访问sp的应用程序无需改动。 对于事务(ACID Transaction), 最可靠的实现方式就是存储过程。对安全性要求高的系统,用户是不允许直接update表的,而是用存储过程来封装update语句,只给用户执行相应存储过程的权限。对用户来说,存储过程就是他与数据库交互的接口。
为什么需要存储过程?
关系数据库是基于关系模型的数据库系统,SQL是基于关系运算的声明式语言。
SQL可以满足许多用户的查询需要,但是并不是所有需求都可以用声明的方式表达的。
存储过程(stored procedure)属于过程式语言,“过程”的意思就是一条一条执行指令。
存储过程扩展了DBMS的能力,在数据(表,关系,relation)与用户之间提供了一层抽象。
同样的功能,用sp实现相比在应用程序里实现的优点有:
与DBMS无缝集成,该功能是数据库系统的一部分,而不是与数据库割裂开。
当需要改动该功能时(修bug,或改进),只需要改sp,访问sp的应用程序无需改动。
对于事务(ACID Transaction), 最可靠的实现方式就是存储过程。
对安全性要求高的系统,用户是不允许直接update表的,而是用存储过程来封装update语句,只给用户执行相应存储过程的权限。对用户来说,存储过程就是他与数据库交互的接口。