PLSQL學習-【2簡單的增刪改查】

哎呀我的天吶發表於2014-11-19

入職時間比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部落格 ” ,連結:http://blog.itpub.net/29990276/viewspace-1339116/,如需轉載,請註明出處,否則將追究法律責任。

相關文章