declare
type my_cursor is ref cursor;--问题1地方
cur_demo1 my_cursor;
temp_sql varchar2(400);
temp_row hiway_demo%rowtype;
e_gender varchar2(2) := '1';begintemp_sql := temp_sql||'and gender='||''''||e_gender||'''';--问题2地方
open cur_demo1 for
'select * from hiway_demo where 1 =1' ||temp_sql;
loop
fetch cur_demo1 into temp_row ;
exit when cur_demo1%notfound;
dbms_output.put_line(temp_row.cname);
end loop;
close cur_demo1;
end;问题1:声明一个游标变量的时候为什么要先type my_cur is ref cursor;而直接这样写cursor my_cur;会报错。
问题2:能给我说下单引号是怎么配对的吗?
type my_cursor is ref cursor;--问题1地方
cur_demo1 my_cursor;
temp_sql varchar2(400);
temp_row hiway_demo%rowtype;
e_gender varchar2(2) := '1';begintemp_sql := temp_sql||'and gender='||''''||e_gender||'''';--问题2地方
open cur_demo1 for
'select * from hiway_demo where 1 =1' ||temp_sql;
loop
fetch cur_demo1 into temp_row ;
exit when cur_demo1%notfound;
dbms_output.put_line(temp_row.cname);
end loop;
close cur_demo1;
end;问题1:声明一个游标变量的时候为什么要先type my_cur is ref cursor;而直接这样写cursor my_cur;会报错。
问题2:能给我说下单引号是怎么配对的吗?
由于单引号的特殊性,当单引号引用的数据里也含有单引号时,需要用2个单引号来转义,表示一个单引号字符值。
cursor my_cur定义的是静态游标。2。引号中的引号需要连续的两个引号
下面这句cur_demo1 my_cursor;是根据my_cur定义cur_demo1为my_cur类型的变量,而my_cur的类型为游标类型。
cursor my_cur 直接定义了my_cur为游标类型。
这叫好比java里的类与实例的关系。问题2:能给我说下单引号是怎么配对的吗?引号中的引号需要连续的两个引号
temp_sql := temp_sql||'and gender='||''''||e_gender||'''';--问题2地方
结果应为
temp-ssql := temp_sql and gender = "e_gender";