cursor c_postype is select pos_type from pos_type_tbl where rownum =1 这一句是定义了一个最普通的游标,把整个查询已经写死,调用时不可以作任何改变。 cursor c_postype1 is select pos_type from pos_type_tbl where rownum = v_rownum; 这一句并没有写死,查询参数由变量v_rownum来决定。需要注意的是v_rownum必须在这个游标定义之前声明。 cursor c_postype2(p_rownum number) is select pos_type from pos_type_tbl where rownum = p_rownum; 这一条语句与第二条作用相似,都是可以为游标实现动态的查询。但是它进一步的缩小了参数的作用域范围。但是可读性降低了不少。 type t_postype is ref cursor ; c_postype3 t_postype; 先定义了一个引用游标类型,然后再声明了一个游标变量。 open c_postype3 for select pos_type from pos_type_tbl where rownum =1; 然后再用open for 来打开一个查询。需要注意的是它可以多次使用,用来打开不同的查询。 从动态性来说,游标变量是最好用的,但是阅读性也是最差的。 注意,游标的定义只能用使关键字IS,它与AS不通用。