#instafeed {
width: 100%;
margin:0px;
}
#instafeed a {
position: relative;
display:inline-block;
float:left;
width: 25%;
}
#instafeed .ig-photo {
width: 100%;
vertical-align: middle;
}
#instafeed .likes {
position: absolute;
width: 100%;
opacity: 0;
font-family: 'LinotypeUniversW01-Thin_723604', Arial, sans-serif;
font-size: 28px;
color: #ffffff;
text-align: center;
top: 50%;
transform: translateY(-50%);
text-shadow: 0 1px rgba(0,0,0,0.5);
-webkit-font-smoothing: antialiased;
-webkit-transition: opacity 100ms ease;
-moz-transition: opacity 100ms ease;
-o-transition: opacity 100ms ease;
-ms-transition: opacity 100ms ease;
transition: opacity 100ms ease;
z-index:10;
}
#instafeed a:hover .likes {
opacity: 1;
}
#instafeed a:hover::after{
content:"";
position:absolute;
width: 100%;
height: 100%;
top: 0; left: 0;
background: #f18a21;
opacity:0.7;
z-index: 5;
}
我的上述查询基本上遍历100到105之间的所有DECLARE
i employees.first_name%TYPE;
a employees.last_name%TYPE;
j employees.salary%TYPE;
v_cnt NUMBER;
CURSOR c1 IS
SELECT first_name
,last_name
,salary
FROM employees
WHERE employee_id BETWEEN 100 AND 105;
BEGIN
OPEN c1;
LOOP
FETCH c1 INTO i, a, j;
dbms_output.put_line(i || ' ' || a || ' SALARY IS ' || j || ' row count is ' || v_cnt);
v_cnt := c1%ROWCOUNT;
EXIT WHEN c1%NOTFOUND;
END LOOP;
CLOSE c1;
END;
/
并打印所有6名员工'使用employee_id
的工资。
但是,我得到7个结果,最后一个结果是前一个记录的重复结果。见下文
dbms_output.put_line
为什么我的结果会像这样返回?为什么我的游标rowcount将第一条记录标记为1?
答案 0 :(得分:2)
v_cnt
时,IS NULL
未初始化,即dbms_output.put_line
,因此您会在输出中看到空行而不是行号。i, a, j
在最后一次提取后不会更改。您可以根据需要获取,但是在从游标中取出最后一行之后,FETCH INTO
运算符不会生成新数据。为了得到你需要的东西(标准循环行为),抓取循环应该被组织为
LOOP
FETCH c1 INTO i, a, j;
EXIT WHEN c1%NOTFOUND;
v_cnt := c1%ROWCOUNT;
dbms_output.put_line(i || ' ' || a || ' SALARY IS ' || j || ' row count is ' || v_cnt);
END LOOP;
为避免提取光标,可以使用“for loop”来完成。 在大多数情况下,这是一个合适的解决方案,绝对是您在问题中提供的示例。
FOR l_rec IN c1
LOOP
i := l_rec.first_name;
a := l_rec.last_name;
j := l_rec.salary;
v_cnt := c1%ROWCOUNT;
dbms_output.put_line(i || ' ' || a || ' SALARY IS ' || j || ' row count is ' || v_cnt);
END LOOP;