对比Web网页程序来说,WPF这种Window窗体应用程序对SQL数据存储过程使用得就相对比较频繁。众所周知,MVC在VS中引用连接Models数据库。再通过后台代码对数据库中的相关联数据表编译增删查改的基本数据操作语句代码。而WPF是所有的对数据的增删查改这些基本操作都需要在它的数据库中对应的存储过程中实现,服务器的存在意义是在数据库的字段与客户端的方法两者之间建立了良好的连接桥梁。因为在最近WPF的学习过程中与SQL存储过程的次数多了起来。欲总结一下SQL存储过程常用到的语句语法。Stored ProcedureSQL存储过程即为:已预编译为一个可执行过程的一个或多个SQL语句。对于一些算法要求比较高,涉及多条数据逻辑,一些高效率或者规范性要求比较高的项目建议采用存储过程。存储过程调用时只需用提供存储过程名和必要的参数信息,不仅是数据专门的负责人员可以更改,后台编程人员也可对存储过程在需要的时候随时进行修改。就像数据库中运行方法,和C#里的方法一样,由存储过程名,存储过程参数组成,可以有返回结果。if else/while/变量/insert/select 等,都可以在存储过程中使用。举例几个简单的存储过程中的基础查询
除开最基本的Select查询,那些分组查询,子查询,条件嵌套查询,平均值,总数等运算等等的SQL较为复杂的查询语句也同样可以在存储过程中编写执行实现查找到对应数据,此处语句案例来自上SQL高级语法课程的老师上课案例,借鉴例子给大家提供参考。
开头就有提到,之所以最近频繁接触数据库存储过程,即WPF中的数据需要,除开查询,剩下的新增修改删除亦是可以在存储过程中结合SQL语法编译语句。学习WPF过程中数据库的增删改语句的字段变量需要声明变量类型。并且修改新增语句还要使用到EXISTS关键字用来检测对要保存的数据行是否已经存在,是否是已有数据。
对数据的分页排序查询操作也是一项常规的处理行为。我们可以使用row_number函数分页,使用传统的TOP分页。它们结合order by..asc(升序)/desc(降序)实现查询到的数据分页升/降的显示。演示几个典型基本语句案例。
上述了一些基本常用的存储过程使用语句和操作。除常规以外还有一类特殊类型的存储过程,我们叫它触发器。它并非由我们直接调用,在创建它的时候就已经对自身进行定义,方便在对特定表或列作特定类型的数据修改时执行。触发器可以查询其他表,包含那些复杂的 SQL 语句。触发器会注重表表之前关系的完整性,即便在多个表中添加、更新或删除行时,也还是会保留在这些表之间所定义的关系。虽然有触发器可进行比一般的存储过程更复杂的操作,但是实际情况却是,对触发器的使用越来越少。毕竟过多的触发器使得数据逻辑变得复杂,数据操作比较隐含,不易进行调整修改。同样触发器的功能逐渐在代码逻辑或事务中替代实现。触发器种类分两种:数据操作语言 (DML) 触发器和数据定义语言 (DDL) 触发器。当INSERT、UPDATE 或 DELETE 语句修改指定表或视图中的数据时,可以使用 DML 触发器。简单的说就是对数据的增删查改这类常规操作。 DDL 触发器激发存储过程以响应各种 DDL 语句,这些语句主要以CREATE、ALTER 和 DROP 开头。比如创建,修改,删除系统存储过程。既然触发器不怎么常用到,那么我就演示触发器基本的常规操作的例子。