ITPub博客

首页 > 数据库 > 数据库开发技术 > PLSQL学习-【2简单的增删改查】

PLSQL学习-【2简单的增删改查】

原创 数据库开发技术 作者:哎呀我的天呐 时间:2014-11-19 16:11:28 0 删除 编辑

入职时间比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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
https://cloud.tencent.com/developer/inventory/14362

注册时间:2014-10-30

  • 博文量
    403
  • 访问量
    2528743