CURSOR cur IS SELECT * FROM xxx; 

FOR cur_result in cur LOOP 

BEGIN V_SUM :=cur_result.列名1+cur_result.列名2 END; 

END LOOP; 

END; 

中的CURSOR cur IS得到的是什么?

用for in 能够得到什么?


答:

CURSOR cur IS是定义一个游标,然后把游标里定义的查询语句存储到游标
因为查询语句查出来的数据往往是几条记录
但是你用的时候缺只能一条一条取出来用
这时游标的好处就体现出来了
游标存储时 存的是几条记录
但是读取时 他是一条记录一条记录读取的
然后再使用
FOR IN循环一下
就可以将你存储在游标里的记录一条一条的读取出来 但是每次只读取一条
以方便你的使用
这种情况如果不使用游标  往往会出现返回多行结果的错误

答2:

CURSOR cur IS 是显性游标,提出的是SELECT * FROM xxx中所有数据,在打开这个游标后 下面的东西都可以引用这个游标内容作为条件了,比如SELECT name FROM aaa ,那么 下面就可以用到 cur.name 作为值来用了,注意CURSOR cur IS提出的是一列数,每循环一次进入下一条数据,直到循环完毕没数据为止.
FOR cur_result in 是隐形游标,使用方法和显性游标大致一样,后面一般是
FOR cur_result in(select ? from ? where ?)loop 
...
end loop; 提出的也是一列值,循环一次换下一条