访问oracle

在pl/sql 中只能直接嵌入sql,dml,以及事务控制语句,而不能嵌入ddl语句如create。。和dcl 语句如grant
1 检索单行数据
  1 使用游标变量接受数据
  declare
    v_ename emp.ename%type
    v_sal   emp.sal%type
  begin
    select ename,sal into v_ename,v_sal
    from emp
  2 使用记录变量接受数据
   declare
    type emp_record_type is record(
      ename emp.ename%type,sal emp.sal%type
    );
    emp_record emp_record_type;
   begin
    select ename,sal into emp_record
    from emp
  3 嵌入 select 语句注意的事项:语句必须返回一条数据,且只能返回一条数据,否则回触发例外,或显示错误
    1) no_data_found
    2) too_many_rows
2 操纵数据
  1 插入数据
    1) 使用values子句插入数据
    declare
     v_deptno dept.deptno%type
     v_dname  dept.dname%type
     v_deptno:=&no
     v_dname:=&name;
     insert into dept(deptno,dname)
     values(v_deptno,v_danme);
    2)使用子查询插入数据
    declare
     v_deptno emp.deptno%type:=no;
    begin
     insert into employee
     select * from emp where deptno=v_deptno
   3 更新数据
    1)使用表达时更新列值
    declare
     v_deptno dept.deptno%type:=&no;
     v_loc dept.loe%type:='&loc';
    begin
     update dept set loc=v_loc
     where deptno=v.deptno;
    end;
   2) 使用子查询更新列值
    declare
     v_ename emp.ename%type:='&name';
    begin
     update emp set(sal,comm)=
     (select sal ,comm from emp where ename=v_ename)
     where job=(select job from emp where ename=v_ename);
3 sql 游标
  1 sql%isopen 用于确定sql 游标是否已经打开。当在pl/sql 块中执行select into ,update 以及delete 语句
    时oracle 会隐含的打开游标,并且在语句执行完之后会隐含的关闭游标。
  2 sql/%found 用于确定sql 语句执行是否成功。
    declare
       v_deptno emp.deptno%type:=$no;
    begin
       update emp set sal=sal*1.1
       where deptno=v_deptno;
    if sql%found then
       dbma_output.put_line('语句执行成功');
    else
       dbms_output.put_line('not success')
    end if
   end
   3 sql%notfound
   4 sql%rowcount 用于返回sql 语句所作用的总计行数
4

posted on 2006-08-09 11:23 康文 阅读(142) 评论(0)  编辑  收藏 所属分类: 数据库


只有注册用户登录后才能发表评论。


网站导航:
 
<2006年8月>
303112345
6789101112
13141516171819
20212223242526
272829303112
3456789

导航

统计

常用链接

留言簿(1)

随笔分类

随笔档案

文章档案

搜索

最新评论

阅读排行榜

评论排行榜