实际返回的行数超出请求的行数
时间: 2024-02-19 16:59:18 浏览: 15
这个报错通常是由于在SQL语句中使用了变量,但是没有定义其类型和大小,导致无法正确返回结果。可能的解决方法包括:
1. 在SQL语句中加上类型定义,例如:将变量 g_n 的类型定义为 NUMBER(10)。
2. 将SQL语句的结果存储到一个临时表中,然后再从临时表中获取结果,例如:
```
CREATE GLOBAL TEMPORARY TABLE temp_table AS
SELECT e.ename,e.sal,s.grade
FROM emp e,salgrade s
WHERE e.sal BETWEEN s.losal AND s.hisal
AND e.empno=v_empno;
SELECT ename, sal FROM temp_table;
```
3. 使用游标来处理SQL语句的结果,例如:
```
DECLARE
v_empno NUMBER:=&p_empno;
v_ename emp.ename%TYPE;
v_sal emp.sal%TYPE;
CURSOR cur_emp IS
SELECT e.ename,e.sal,s.grade
FROM emp e,salgrade s
WHERE e.sal BETWEEN s.losal AND s.hisal
AND e.empno=v_empno;
BEGIN
OPEN cur_emp;
FETCH cur_emp INTO v_ename, v_sal, :g_n;
WHILE cur_emp%FOUND LOOP
DBMS_OUTPUT.PUT_LINE(v_ename || ', ' || v_sal);
FETCH cur_emp INTO v_ename, v_sal, :g_n;
END LOOP;
CLOSE cur_emp;
END;
/
```
以上是一些常见的解决方法,具体哪种方法适用取决于具体的情况。