我在Scott模式中运行以下内容:
SET serveroutput ON;
BEGIN
FOR c_Emp IN (SELECT * FROM emp)
LOOP
dbms_output.put_line('The record processed by the cursor ' || c_Emp%rowcount);
END LOOP;
end;
这给出了错误:
cursor属性可能不适用于非游标'C_EMP'
但是,如果使用显式游标完成此操作,则可以正常工作:
设置serveroutput;
DECLARE
emp_record emp%ROWTYPE;
count_variable NUMBER;
CURSOR c IS
SELECT * FROM emp;
BEGIN
OPEN c;
loop
fetch c INTO emp_record;
exit WHEN c%notfound;
dbms_output.put_line ('The record count is ' || c%rowcount);
END loop;
close c;
end;
只是想了解:是否在使用CURSOR FOR LOOP时,索引变量是不是游标属性,如果是这样,为什么呢?有人可以将这个放弃......
答案 0 :(得分:1)
c_Emp
不是游标,它是一条记录,包含SELECT语句中每列的字段
c_Emp
类似于第二个示例中的emp_record
。
答案 1 :(得分:1)
即使使用FOR循环,也必须明确定义游标。 使用带有光标的FOR循环的示例使用如下所示:
declare
cursor c1 is select a from table;
begin
FOR b in c1
loop
<required logic>
end loop;
end;
答案 2 :(得分:1)
要在for循环中获取索引,可以在隐式游标的select子句中添加 rownum 伪列。
$(document).ready(function () {
//category switch
$('.onoffswitch').change(function () {
var cat_id = $(this).children(':hidden').val();
if ($(this).children(':checked').length === 0)
{
var status = 0;
}
else
{
var status = 1;
}
$.ajax({
type: 'GET',
url: base_url + "category/update_cat_status",
data: {status: status, cat_id: cat_id},
success: function (response) {
//console.log(response);
}
});
});
});