关于存储过程调用存储过程的问题(着急呀!):
关于存储过程调用存储过程的问题(着急呀!):
代码如下:
存储过程1:
/*
获取外语情况
*/
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'TSQL_languageProc' AND type = 'P')
DROP PROCEDURE TSQL_languageProc
GO
create procedure TSQL_languageProc
@forLangType varchar(100)='null' output,
@expertID int
as
begin
declare @itemvalue varchar(30)
declare c insensitive cursor for SELECT forLangType FROM subtbForLangType,tbExpertForLang WHERE subtbForLangType.forLangTypeID=tbExpertForLang.forLangTypeID AND expertID=@expertID
open c
fetch next from c into @itemvalue
if @@FETCH_STATUS = 0
set @forLangType = @itemvalue
while @@FETCH_STATUS = 0
begin
fetch next from c into @itemvalue
if @@FETCH_STATUS = 0
set @forLangType = @forLangType+','+ @itemvalue
end
close c
deallocate c
end
存储过程2:
/*
调用其他存储过程
*/
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'TSQL_expert' AND type = 'P')
DROP PROCEDURE TSQL_expert
GO
create procedure TSQL_expert
as
begin
declare @expertID int
declare @expertID_temp int
--变量声明
declare @forLangType_item varchar(30) --外语
declare c_main insensitive cursor for SELECT expertID FROM tbExpert
open c_main
fetch next from c_main into @expertID_temp
if @@FETCH_STATUS = 0
begin ----------------begin------------------
------------------------------处理开始---------------------------------------------
--设置@expertID
set @expertID=@expertID_temp
select @expertID_temp
------------------------------处理结束-------------------------------------------------
end ----------------end------------------
while @@FETCH_STATUS = 0
begin
fetch next from c_main into @expertID_temp
if @@FETCH_STATUS = 0
begin ----------------begin------------------
------------------------------处理开始---------------------------------------
--设置@expertID
set @expertID=@expertID_temp
--对外语的处理(调用)
exec TSQL_languageProc @forLangType=@forLangType_item OUTPUT,@expertID=@expertID
select @expertID_temp,@forLangType_item
------------------------------处理结束----------------------------------------------
end ----------------end------------------
end
close c_main
deallocate c_main
问题是:存储过程2输出的结果只有两条,而我的tbExpert表中有二十多条记录!
调试了好长时间了!
问题点数:20、回复次数:3Top
1 楼mm2love2zz(never stop.)回复于 2006-03-14 23:41:19 得分 10
open c_main
fetch next from c_main into @expertID_temp
while @@FETCH_STATUS = 0
begin
………………
fetch next from c_main into @expertID_temp --循环
end
close c_main
deallocate c_mainTop
2 楼mm2love2zz(never stop.)回复于 2006-03-14 23:42:11 得分 10
你的存储过程好象不循环,格式检查下~Top
3 楼fucaibao(付彩宝)回复于 2006-03-15 10:40:09 得分 0
我如果不掉用存储过程1的话,是循环的我试过了,麻烦您再看看吧....Top




