求一存储过程的实现
有一DATAGRID 左面是一列CHECKBOX, 实现功能:当点删除后将所选种的CHECKBOX列的东西从数据库删除,现在我所用的方法是 用个FOR 读一行删一行,感觉这样效率不是很高 哪位可以介绍一个方法可以将每行所选的ID 存到一个ARRAYLIST里发给一个存储过程,然后在存储过程中删除 问题点数:20、回复次数:6Top
1 楼hamadou(闵峰--为了理想而奋斗)回复于 2005-06-10 08:07:58 得分 3
可以使用datatable.select方法,将checkbox所在行为true的选出来,然后进行删除处理。你当然也可以使用存储过程!Top
2 楼Alisa(零度百合)回复于 2005-06-10 08:12:05 得分 3
当你的数据库没有涉及到数据并发的时候,我觉得没有必要使用存储过程,单条删除在处理的时候也不到1m的时间,不知道你说的效率不高是说代码的处理上,还是数据库的处理上。Top
3 楼exing(铱星)回复于 2005-06-10 08:28:07 得分 3
你就是用存储过程也还是要一条一条的删除Top
4 楼qgqchile(qgq)回复于 2005-06-10 23:38:17 得分 0
当然我现在的方案可以解决问题而且也不慢
但我想 要是我选择30条记录的话那么要在客户端和SQL服务器间走30个来回,但如果一次性发给服务器端让SQL处理的话在效率上肯定是要快的,我是说在同意时间N多人提交同一命令的话
我想做WEB开发上应该更多的考虑一些服务器运行效率上的问题,不是么?Top
5 楼AntingZ(夕惕若)回复于 2005-06-10 23:49:39 得分 11
用一句sql也可以的:
delete from 表 where 主键 in (a1,a2,a3,....a30)Top
6 楼qgqchile(qgq)回复于 2005-06-11 01:52:38 得分 0
有那么点意思了,关键是我如何可以 将客户端的参数动态的传过去而SQL那边也要动态的接受,因为客户或许一次选10 个也可能选30个 难不成我在PROCEDURE 每次DELETE I都要N 到最大数么.
我试过用XML来进行传递
DECLARE @strtemp varchar(8000)
set @strtemp=listId
delete from 表 where 主键 in (strtemp)
可以实现
但这样的话如果KEY是NUMERIC类型的就不能成了又涉及到一个数据类型转换的问题
不知道各位有何高见Top




