您的位置:首页 > 数据库 > Oracle

Oracle学习笔记(二)——在PL/SQL中执行各种SQL语句

2009-11-13 09:58 274 查看

定义语言DDL:create  drop    truncate

    操作语言DML:修改类:insert  delete   update

                查询类: 查询单行,查询多行

在PL/SQL中执行SQL语句需要注意 DDL不能直接执行,DML中的增删改可以执行.

        赋值的方式有两种:①XXX := OOO;  ②用select XXX into OOO

 

    游标:对象或查询数据所在的内存地址,保存了增删改语句执行后的状态

    游标分为隐式游标和显式游标:

        隐式游标对象为SQL,我们常用的是SQL%ROWCOUNT得到执行SQL语句所影响的行数;SQL%FOUND表示数据是否存在;

        显式游标分为游标FOR循环和CURSOR对象:

          ①游标FOR循环:语法为  FOR 游标对象名 in 查询语句 LOOP .....END LOOP

            在需要对查询中每条记录进行逐条处理时用游标FOR循环,在很多资料上有不少人也将FOR循环归纳为隐式对象的范畴

          ②CURSOR:必须用户自己定义,自己打开,自己循环,自己关闭,简称为dofw

      使用游标需要以下步骤:

            定义游标: CURSOR 游标对象名 is 查询语句;

            定义行标量: 行变量名 游标对象名%ROWTYPE;

            打开游标: OPEN 游标对象名;

            循环前必须要先执行FECTH语句,该语句执行机制是先取得当前行数据,然后指针下移一位,基本语法为: fetch 游标对象名 into 行变量名;

            循环语句:while(游标对象名%FOUND) LOOP ....  END LOOP;

            关闭游标:CLOSE 游标对象名;

 

PL/SQL中执行字符串:

      execute immdiate(String) String表示需要执行的SQL字符串.

    如果查询时返回多条记录,则需要使用:   OPEN 游标变量名 FOR 查询语句

                                                  用:   TYPE 游标变量名 IS REF CURSOR定义游标变量类型

                                                  之后操作与dofw操作一样;

 

扩展:

 导数据:
    如果用Oracle导入导出数据
    导出:exp scott/tiger@连接名 file=c:\1.dmp
    导入:imp scott/tiger@连接名 file=c:\1.dmp


    如果用PL/SQL DEV导入导出数据
    导出insert语句,create 这叫  sql脚本!

 

游标CURSOR对象使用代码展示:

①:

   DECLARE
  CURSOR my_cur IS SELECT * FROM emp;
  my_row my_cur%ROWTYPE;
BEGIN
  OPEN my_cur;
  FETCH my_cur INTO my_row;
  WHILE(my_cur%FOUND)
    LOOP
      dbms_output.put_line(my_row.ename);
      FETCH my_cur INTO my_row;
    END LOOP;
    CLOSE my_cur;
END;

 

②:
 DECLARE
  mysql VARCHAR2(4000);
  TYPE my_cur_type IS REF CURSOR;
  my_cur my_cur_type;
  my_row emp%ROWTYPE;
  a VARCHAR2(100);
BEGIN
  mysql := 'select * from emp';
  OPEN my_cur FOR mysql;
  FETCH my_cur INTO my_row;
  WHILE(my_cur%FOUND)
   LOOP
     dbms_output.put_line(my_row.ename);
     FETCH my_cur INTO my_row;
   END LOOP;
   CLOSE my_cur;
END;

<!-- --> 阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: