今天我碰到了一个超级奇怪的问题,关于SQL存储过程的,希望赐教!!!
今天我修改了一个存储过程,该存储过程的功能是删除几个相关表里的数据.前面几行是删除某些表的,我把后面几行的SQL语句修改一次.
一执行,结果是前面几行的SQL语句正常执行了,删除了表里的数据,但是我改过的那几行SQL语句却没有去删除另外几个表里的数据.我把那几行SQL语句放到查询分析器里去执行,结果成功删除了那些表里的数据.
这到底是怎么回事啊???为什么在存储过程里SQL语句执行不了,放在查询分析器里却成功执行了.
请各位赐教!!!
问题点数:20、回复次数:7Top
1 楼huangjianyou(小健)回复于 2005-08-03 11:06:21 得分 0
建议你应该把存储过程贴出来的,这样大家才看清楚是否有问题。
^_^Top
2 楼WuChenCan(雨中男孩)回复于 2005-08-03 11:29:00 得分 0
是啊,把程序贴出来看看呀Top
3 楼sdpjeff(小笨蛙)回复于 2005-08-03 11:51:28 得分 0
CREATE PROC DeleteProject
@ProjectID int
AS
declare @StrID varchar(5000)
declare @StrSQL varchar(5000)
set @StrID=''
set @StrSQL=''
IF @ProjectID <>1
BEGIN
delete from JobReport where JobReportID=@ProjectID
delete from JobPlan wehre JobPlanID=@ProjectID
DELETE FROM ProjectProcedureInfo WHERE ID=@ProjectID AND Type=0
select @StrID=@StrID+convert(varchar,ID)+',' from ProjectProcedure_Component where ComponentID
in (select ComponentID from Project_Component where ProjectID=@ProjectID )
if len(@StrID)>0
begin
SET @StrID = LEFT(@StrID,LEN(@StrID)-1)
set @StrSQL='delete from ProjectProcedureInfo where ID in ('+@StrID+') and Type=1'
EXEC(@StrSQL)
end
delete from ProjectProcedure_Component where ComponentID in (select ComponentID from Project_Component where ProjectID=@ProjectID )
delete from Project_Component where ProjectID=@ProjectID
END
GO
Top
4 楼sdpjeff(小笨蛙)回复于 2005-08-03 11:53:24 得分 0
delete from JobReport where JobReportID=@ProjectID
delete from JobPlan wehre JobPlanID=@ProjectID
上面两句执行是成功的
这两举下面那些语句就无法执行了
但是我把后面那部分SQL语句拷贝到查询分析器里执行却是成功的Top
5 楼huangjianyou(小健)回复于 2005-08-03 12:03:41 得分 0
DELETE FROM ProjectProcedureInfo WHERE ID=@ProjectID AND Type=0
变为:
DELETE FROM ProjectProcedureInfo WHERE [ID]=@ProjectID AND Type=0
试试。
^_^Top
6 楼sdpjeff(小笨蛙)回复于 2005-08-03 12:17:06 得分 0
谢谢各位的指教,问题已经解决了,我把后面无法执行的语句调到最前面,结果就执行正确了,不知道为什么会那样,呵呵Top
7 楼WuChenCan(雨中男孩)回复于 2005-08-03 12:33:15 得分 0
可能是你在表之间设置了级联或表中创建了DELETE触发器吧Top




