首页 > 数据库 > 数据库开发技术 > PLSQL学习-【2简单的增删改查】
入职时间比1985年5月1日晚的员工
SQL> declare v_ename emp.ename%type; begin select ename into v_ename from emp where hiredate <= to_date(\'1985-11-11\',\'yyyy-mm-dd\'); dbms_output.put_line(v_ename); end; / declare * ERROR at line 1: ORA-01422: exact fetch returns more than requested number of rows ORA-06512: at line 4
返回多行值不能使用into这种形式
SQL> declare 2 v_ename emp.ename%type; 3 begin 4 select ename into v_ename from emp where hiredate <=to_date(\'1980-12-28\',\'yyyy-mm-dd\'); 5 dbms_output.put_line(v_ename); 6 end; 7 / PL/SQL procedure successfully completed.
这个返回单行可以
另一种写法(这种写法需要了解):
declare v_avg number; v_sql varchar2(100); begin v_sql:='select trunc(avg(sal),0) from emp where deptno = :1'; execute immediate v_sql into v_avg using 10; dbms_output.put_line(v_avg); end; / 2916 PL/SQL procedure successfully completed.
insert:
declare begin insert into emp values(7777,'haha', 'CLERK', 7902,sysdate , 5500,null,null); commit; end; / PL/SQL procedure successfully completed. declare v_sql varchar2(100); begin v_sql:='insert into emp(empno,ename,job,mgr,hiredate,sal) values(:1,:2,:3,:4,:5,:6)'; execute immediate v_sql using 8000,'Zhang','clerk',7901,sysdate,3000; commit; end; / PL/SQL procedure successfully completed.
delete:
declare
begin
delete from emp where deptno =22;
if sql%notfound then
dbms_output.put_line('not found');
else
dbms_output.put_line(sql%rowcount);
end if;
--commit;
end;
/
not found
PL/SQL procedure successfully completed
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29990276/viewspace-1339116/ ,如需转载,请注明出处,否则将追究法律责任。