使用存储过程的好处多多,这是对于程序的安全性和性能来讲的,这里不必多言了.凡事都有两面性,不可能处处都是好的,那样就没有物极必反,否极泰来之说了.使用存储过程的不利的一方面是给编程带来的麻烦,关于调试和编写存储过程时要进行的数据类型的转换会让人吃尽苦头.
我们在编存储过程的时候,往往遇到的最多的就是其参数众多,数据类型又不一样.这样带来的副作用就是一看到那么大个的存储过程就头大,没有办法下手一样的.在我使用的过程中我的感觉是这样的,所以为了自己以后有个规则可循,在这里就想好应对的办法,以防以后在用的时候来查一下.因为最近正在使用,怕以后就忘记了,好记性不如烂笔头,家里人常说的话,就记在这里吧:)
使用存储过程的第一步就是进行存储过程的编写.编写之前要做的准备工作:1,确定要输出和输入的参数.这一步可以在把界面(如datgGrid)设计好以后,把各输出项定好了,来确定.如果参数多的话,自己记不过来,那就采取一个比较笨的办法.按DataGrid中字段的排列顺序,从头到尾,写好序号及数据库中的字段名(写在纸上,这样可以方便拿着对照,或打印出来),例如:
1,lydwh
2,yqbh
3,flh .......
这样做的好处是可以确切的知道表中字段作为参数的个数,还可以确定字段的顺序.比如在DataGrid的更新的时候你可以对照着这个在纸上的列表来更正赋值是否有错误,还可以防止丢掉字段,在运行的时候再去debug.2,确定各个参数的数据类型.在这一步中也要像在1中一样的,把数据库表的设计视图拷贝下来.作用是在写存储过程的时候不用再去看表的设计视图,切换来切换去的更容易出错.在这里说一下把这两个列表写在纸上的用途就是可以用笔在上面做标识,在核对的时候用各种不同的记号来标记.这两步做完了基本上就可以写存储过程了.写好了存储过程以后,只要没有语法错误就正确的了?(是不是这样呢,如果有不同的看法就好了). 在检查的时候可以借用UltraEdit等文本编辑工具,来进行行的查询,对比一下参数的数量是否相同.在命名参数的时候可以用和数据库表中的字段相同的名字,这样可以相互对照,不至于出错.因为加了@以后就是不同的参数名了,输出参数可以在前面加相同的一个标识,这样有利于批量的替换.
第二步,调用存储过程.在这里有些小技巧,在加存储过程的参数的时候,可以把SQL SERVER 存储过程的参数表复制过来,直接写在程序里,进行必要的修改(副作用是,存储过程的错误会带到程序中).可以用批量的替换来更改参数的名字.在编写调用存储过程的代码时,也要参照1,2中的两个表来进行.
第三步,编写存储过程的时候,在参数比较多的情况下,容易产生急躁的情绪,这个时候一定要平静下来,慢慢的去做.在写输入和输出参数的时候还是有些小技巧的,不要一直想着自己去输.
存储过程写完了,那么就可以运行程序了,一般是会出错的.数据类型的不一致,参数类型的不匹配.这个时候一定也不要忙的,按如下步骤进行:1,首先查一下赋值参数表是不是和程序中要输出的字段的顺序和名字相同.2,进行debug.这时候要查一下每个参数的名字和所要得到的数据类型是不是匹配,有没有异常出现在参数的赋值过程中.这样就可以对照修改了.
以上只是对存储过程中遇到的一些小问题的总结,以后也许会慢慢加一点.数据类型的转换中,datetime在赋值的时候不要转换,Money类型的要转成Decimal来进行赋值.int类型的也不需要转换.