67,549
社区成员




scott@ORCL> select row_number() over(order by sal) S from emp where ename like '&1';
输入 1 的值: A%
原值 1: select row_number() over(order by sal) S from emp where ename like '&1'
新值 1: select row_number() over(order by sal) S from emp where ename like 'A%'
S
----------
1
2
select* from (select *, ROW_NUMBER() over ( order by id ) rowid from BookInfo where bookName like ?) temp where rowid between ? and ?
scott@ORCL> declare
2 type c_ref_type is ref cursor;
3 ref_c c_ref_type;
4 rec emp%rowtype;
5 v_name varchar2(4);
6 begin
7 v_name := '&1';
8 open ref_c for q'!select empno,ename,job,mgr,hiredate,sal,comm,deptno
9 from (select emp.*, ROW_NUMBER() over(order by sal) row_id
10 from emp
11 where ename like :1) temp
12 where row_id between :1 and :1!'
13 using v_name, 1, 3;
14 loop
15 fetch ref_c
16 into rec;
17 exit when ref_c%notfound;
18 DBMS_OUTPUT.put_line('姓名: '||rec.ename || ' 薪水:' || rec.sal);
19 end loop;
20 close ref_c;
21 end;
22 /
输入 1 的值: A%
原值 7: v_name := '&1';
新值 7: v_name := 'A%';
姓名: ADAMS 薪水:1100
姓名: ALLEN 薪水:1600
PL/SQL 过程已成功完成。
scott@ORCL> select *,row_number() over(order by sal) from emp;
select *,row_number() over(order by sal) from emp
*
第 1 行出现错误:
ORA-00923: 未找到要求的 FROM 关键字
scott@ORCL> select t.*,row_number() over(order by sal) from emp t;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
ROW_NUMBER()OVER(ORDERBYSAL)
----------------------------
7369 SMITH CLERK 7902 17-12月-80 800 20
1
scott@ORCL> set serveroutput on
scott@ORCL> declare
2 type c_ref_type is ref cursor;
3 ref_c c_ref_type;
4 rec emp%rowtype;
5 v_name varchar2(4);
6 begin
7 v_name := '&1';
8 open ref_c for q'!select empno,ename,job,mgr,hiredate,sal,comm,deptno
9 from (select emp.*, ROW_NUMBER() over(order by sal) row_id
10 from emp
11 where ename like :1) temp
12 where row_id between :1 and :1!'
13 using v_name, 1, 3;
14 loop
15 fetch ref_c
16 into rec;
17 exit when ref_c%notfound;
18 DBMS_OUTPUT.put_line('姓名: '||rec.ename || ' 薪水:' || rec.sal);
19 end loop;
20 close ref_c;
21 end;
22 /
输入 1 的值: %%
原值 7: v_name := '&1';
新值 7: v_name := '%%';
姓名: SMITH 薪水:800
姓名: JAMES 薪水:950
姓名: ADAMS 薪水:1100
PL/SQL 过程已成功完成。