SQL拾遗之存储过程
时间:2011-03-28 来源:黑白电影
今天的ADO.NET课,在讲解存储过程参数输入与输出的时候,才发觉自己学得是那么的浅薄,原来自己只会那几句基本的增删改查语句。
Q:为什么ADO.NET中Command对象Parameters集合中的Direction属性有分为PatameterDirection.Input(只输入参数),PatameterDirection.InputOutput(双向参数),PatameterDirection.Output(只输出参数),PatameterDirection.ReturnValue(存储过程的返回值)?
A:在上这节课之前,我也写过一些存储过程,就是简单的以为:
View Code
1 create proc [存储过程名]才发现原来参数里面大有文章。查阅SQL20005联机丛书的指定参数方向可以看出,参数分为in(输入参数,默认),out(输出),这就与前面的枚举对应了。至于PatameterDirection.ReturnValue则是由RETURN语句从存储过程中返回信息。 Q:为什么会有'Return Value'这个值呢? A:只要不声明SET NOCOUNT ON,返回的值就是受影响的行数。 Q:什么时候用到SET NOCOUNT ON? A:根据我的揣测(还没证实),比如说增删改就需要返回受影响的行数,这样就能在ADO.NET中调用ExecuteNonQuery()方法来判断是否增加\修改\删除了;关于需要导出为DataTable的查询语句,返回的受影响的行数为0,所以完全没必要来返回受影响的行数,添加SET NOCOUNT ON,对性能上应该有所提高。
2 参数1,参数....
3 as
4 ....--原以为只要写一些简单的SQL语句,原谅我的浅薄
相关阅读 更多 +