比如我的一个目录,分一级目录跟二级目录,删除一级目录时,如果发现该一级目录没有二级目录,那么可以直接删除,
如果有存在二级目录,则拒绝删除,当然这个我们是可以进行判断的。但是如果直接在存储过程里判断的话,asp.net执行页面是不会有类似msgbox这样的提示框出现的,他只按where条件语句里的删除,当然有可能是删除0记录,反正他就是执行就是了。我现在有这样的解决方案,不知道能不能实现:存储过程里:执行查询,发现有二级目录存在,则输出参数给asp.net页面,asp.net程序借此判断有二级目录存在,将false之类的传递给输入参数,该存储过程根据输入函数如果是falsemze则回滚删除操作,或不执行删除。true则彻底删除!这样的解决方案可以吗,或者各位有更好的解决方案吗?尽量存储过程跟asp.net程序独立不耦合,交互使用输入输出参数等接口。这样的方案可以吗?谢谢提供
如果有存在二级目录,则拒绝删除,当然这个我们是可以进行判断的。但是如果直接在存储过程里判断的话,asp.net执行页面是不会有类似msgbox这样的提示框出现的,他只按where条件语句里的删除,当然有可能是删除0记录,反正他就是执行就是了。我现在有这样的解决方案,不知道能不能实现:存储过程里:执行查询,发现有二级目录存在,则输出参数给asp.net页面,asp.net程序借此判断有二级目录存在,将false之类的传递给输入参数,该存储过程根据输入函数如果是falsemze则回滚删除操作,或不执行删除。true则彻底删除!这样的解决方案可以吗,或者各位有更好的解决方案吗?尽量存储过程跟asp.net程序独立不耦合,交互使用输入输出参数等接口。这样的方案可以吗?谢谢提供
Create Procedure aa
(@IsChildExists bit output)
As
...
你可以用下面代码测试下看看错误代码是多少:try
{
doWith();//此方法里做级联删除
}
catch (System.Data.SqlClient.SqlException e)
{
string errCode = e.ErrorCode;
}
@parentID int
As
if exists(select ... from yourTable where parentID = @parentID)
return -1
begin try
begin tran
--删除二级目录
--删除一级目录
commit tran
return 0
end try
begin catch
rollback tran
return -1
end catch
go程序根据存储过程的返回值来做相应输出,当然楼主得会使用ado.net存储过程的返回值以上方案也可以用输出参数解决
amandag的方法应该是效率最低的。