我用pb11.5 mssql2000
代码:
DECLARE mycursor CURSOR FOR
SELECT DISTINCT jl.factory
FROM jl
WHERE (jl.jl_time >= :tt_date)AND
(jl.jl_time < :tom_date)
ORDER BY jl.factory asc;
open mycursor;
do while sqlca.sqlcode = 0
fetch mycursor into :factory;
if sqlca.sqlcode = 100 then
exit
end if
DECLARE mycursor2 CURSOR FOR
SELECT DISTINCT jl.norms
FROM jl
WHERE (jl.factory = :factory)AND
(jl.jl_time >= :tt_date)AND
(jl.jl_time < :tom_date)
ORDER BY jl.norms asc;
open mycursor2;
do while sqlca.sqlcode = 0
fetch mycursor2 into :norms;
if sqlca.sqlcode = 100 then
exit
end if
...................
loop
close mycursor2;
loop
close mycursor;
外层factory取到了值,可内层norms取不到。提示cursor is not open。
这段代码在pb8.0中动行的很好,可在pb11.5中就不行。高手看看是什么问题?
------解决方案--------------------
为什么要用两个游标,这样一个游标不行吗
SELECT DISTINCT jl.factory, jl.norms
FROM jl
WHERE (jl.jl_time >= :tt_date)AND
(jl.jl_time < :tom_date)
ORDER BY jl.factory asc, jl.norms asc;