PLSQL块中执行SQL语句

A.   数据定义DDL

create,drop,truncate,不能直接执行,truncate执行时只做数据删除,不写日起,不维护索引

在PLSQL块中执行字符串SQL语句

注意:在PL/SQL块中可以直接执行,通常没有必要,除非表名和字段名是动态的。

Execute immediate “DDL语句”

Execute immediate “select 语句” into 变量名

DECLARE

my_sql VARCHAR2(200);

my_row emp%ROWTYPE;

BEGIN

my_sql :='select * from emp where empno = 7788';

EXECUTE IMMEDIATE my_sql INTO my_row;

dbms_output.put_line(my_row.ename);

END;

Open cursor变量 for “select语句”

DECLARE

TYPE cur_type IS REF CURSOR;

my_sql VARCHAR2(200);

my_cur cur_type;

my_row emp%ROWTYPE;

BEGIN

my_sql :='SELECT * FROM emp WHERE sal >= 3000';

OPEN my_cur FOR my_sql;

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;

B.   数据修改DML

insert,delete,update,可直接执行,通过SQL对象返回影响行数

SQL对象:保存增删改语句执丢后的状态

SQL%ROWCOUNT 影响行数

SQL%FOUND 有数据

C.   数据查询:

查询单行:使用select into语句,返回一行记录正常执行,0行或多行需要捕捉异常

捕捉异常

DECLARE

my_row emp%ROWTYPE;

BEGIN

SELECT *

INTO my_row

FROM EMP

WHERE empno = 7788;

dbms_output.put_line(my_row.EMPNO||'   '||my_row.ENAME);

EXCEPTION

WHEN no_data_found THEN

dbms_output.put_line('没有该工号!');

WHEN too_many_rows THEN

dbms_output.put_line('多个员工使用一个工号!');

WHEN OTHERS THEN

dbms_output.put_line(Sqlcode||'  '||SQLERRM);

END;

实际应用时通过影响行数来判断

Declare I number begin select count(*) into I form emp where empno = 7788 if(I=1) then…

查询多行:使用显示游标,循环取出每条数据(for循环和cursor)

需要对查询中每条记录进行逐条处理时使用

游标:对象或查询数据所在的内存地址

----用FOR循环

BEGIN

FOR temp IN(SELECT ename FROM emp WHERE sal >= 3000)

LOOP

dbms_output.put_line(temp.ename);

END LOOP;

END;

----用cursor

DECLARE

CURSOR my_cur IS SELECT ename FROM emp WHERE sal >= 3000;

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;

PLSQL实例(游标)的更多相关文章

  1. PLSQL触发器,游标

    --触发器 drop table emp_log create table emp_log( empno number, log_date date, new_salary number, actio ...

  2. Oracle之plsql及游标

    --1.赋值 --:= 赋值 declare var_name ) :='&请输入名字';--&是一个提示输入的特殊符号,会打开一个输入框 var_age ) :='&请输入年 ...

  3. plsql实例精讲部分笔记

    转换sql: create or replace view v_sale(year,month1,month2,month3,month4,month5,month6,month7,month8,mo ...

  4. oracle(sql)基础篇系列(五)——PLSQL、游标、存储过程、触发器

      PL/SQL PL/SQL 简介 每一种数据库都有这样的一种语言,PL/SQL 是在Oracle里面的一种编程语言,在Oracle内部使用的编程语言.我们知道SQL语言是没有分支和循环的,而PL语 ...

  5. .Net程序员学用Oracle系列(27):PLSQL 之游标、异常和事务

    1.游标 1.1.游标属性 1.2.隐式游标 1.3.游标处理及案例 2.异常 2.1.异常类别 2.2.异常函数 2.3.异常处理及案例 3.事务 3.1.开始事务.结束事务 3.2.自治事务 3. ...

  6. oracle(sql)基础篇系列(五)——PLSQL、游标、存储过程、触发器

    PL/SQL PL/SQL 简介 每一种数据库都有这样的一种语言,PL/SQL 是在Oracle里面的一种编程语言,在Oracle内部使用的编程语言.我们知道SQL语言是没有分支和循环的,而PL语言是 ...

  7. 2018.6.5 Oracle plsql编程 游标的使用

    --3.查询10部门所有员工的姓名.(ref游标实现) 动态游标 declare --创建一种游标类型 type type_cursor is ref cursor; --声明变量指定游标类型 v_c ...

  8. 2018.5.30 Oracle数据库PLSQL编程---游标的使用

    显示游标的步骤 /* 显示游标处理步骤 1.声明游标 语法结构:cursor 游标名称 is SQL 语句; 2.打开游标 语法结构:open游标名称; 3.提取数据 语法结构:fetch 4.关闭游 ...

  9. 【PLSQL】游标

    Oracle中的SQL在执行时需要分配一块内存区域,这块内存区域叫做上下文区. 上下文区中记录了SQL语句的处理信息,这些信息包括:查询返回的数据行.查询所处理的数据的行号.指向共享池中的已分析的SQ ...

随机推荐

  1. 【mysql】1206 SQLSTATE: HY000 (ER_LOCK_TABLE_FULL) 问题

    最近在做一个项目,其中一需求是:部分数据库中的数据需要定时删除掉(满足一定条件,比如7天前的数据都不保留) 最初的执行方法: 使用Quartz定时执行数据库操作,进行数据删除,数据库操作使用delet ...

  2. Lucene学习总结之三:Lucene的索引文件格式(1)

    Lucene的索引里面存了些什么,如何存放的,也即Lucene的索引文件格式,是读懂Lucene源代码的一把钥匙. 当我们真正进入到Lucene源代码之中的时候,我们会发现: Lucene的索引过程, ...

  3. GIT 实验

    服务器环境:linux + git + gitolite(gitolite是什么,说白了就是安装后建了一个仓库,管理员用户可以通过修改并上传配置文件实现GIT仓库及其权限的管理.提醒:别用那个gito ...

  4. 在Python3.5下安装和测试Scrapy爬网站

    1. 引言 Scrapy框架结构清晰,基于twisted的异步架构可以充分利用计算机资源,是爬虫做大的必备基础.本文将讲解如何快速安装此框架并使用起来. 2. 安装Twisted 2.1 同安装Lxm ...

  5. SRAM与SDRAM的比较(转)

    原文:http://blog.csdn.net/fg8181/article/details/2278100 内存在电脑中起着举足轻重的作用,一般采用半导体存储单元,包括随机存储器(RAM),只读存储 ...

  6. 序列化与反序列化 - BinaryFormatter二进制(.dat)、SoapFormatter(.soap)、XmlSerializer(.xml)

    序列化的作用是什么?为什么要序列化? 1.在进程下次启动时读取上次保存的对象的信息. 2.在不同的应用程序域或进程之间传递数据. 3.在分布式应用程序中的各应用程序之间传输对象. 所为序列化,就是将对 ...

  7. WPF MultiBinding后台绑定动态属性 属性改变不调用Convert的问题

    一开始的写法: MultiBinding mb = new MultiBinding(); Binding b1 = new Binding(); b1.ElementName = "tex ...

  8. mvc 解决StyleBundle中 图片绝对路径 装换成相对路径的问题 CssRewriteUrlTransform

    问题 解决办法

  9. MD5加密算法(转)

    获取字符串的MD5摘要 原文更详细: http://www.weixuehao.com/archives/474 代码如下: import java.security.MessageDigest; p ...

  10. Ffmpeg和SDL如何同步音频

    ong> 同步音頻 现在我们已经有了一个比较像样的播放器.所以让我们看一下还有哪些零碎的东西没处理.上次,我们掩饰了一点同步问题,也就是同步音频到视频而不是其它的同步方式.我们将采用和视频一样的 ...