PLSQL实例(游标)
在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实例(游标)的更多相关文章
- PLSQL触发器,游标
--触发器 drop table emp_log create table emp_log( empno number, log_date date, new_salary number, actio ...
- Oracle之plsql及游标
--1.赋值 --:= 赋值 declare var_name ) :='&请输入名字';--&是一个提示输入的特殊符号,会打开一个输入框 var_age ) :='&请输入年 ...
- plsql实例精讲部分笔记
转换sql: create or replace view v_sale(year,month1,month2,month3,month4,month5,month6,month7,month8,mo ...
- oracle(sql)基础篇系列(五)——PLSQL、游标、存储过程、触发器
PL/SQL PL/SQL 简介 每一种数据库都有这样的一种语言,PL/SQL 是在Oracle里面的一种编程语言,在Oracle内部使用的编程语言.我们知道SQL语言是没有分支和循环的,而PL语 ...
- .Net程序员学用Oracle系列(27):PLSQL 之游标、异常和事务
1.游标 1.1.游标属性 1.2.隐式游标 1.3.游标处理及案例 2.异常 2.1.异常类别 2.2.异常函数 2.3.异常处理及案例 3.事务 3.1.开始事务.结束事务 3.2.自治事务 3. ...
- oracle(sql)基础篇系列(五)——PLSQL、游标、存储过程、触发器
PL/SQL PL/SQL 简介 每一种数据库都有这样的一种语言,PL/SQL 是在Oracle里面的一种编程语言,在Oracle内部使用的编程语言.我们知道SQL语言是没有分支和循环的,而PL语言是 ...
- 2018.6.5 Oracle plsql编程 游标的使用
--3.查询10部门所有员工的姓名.(ref游标实现) 动态游标 declare --创建一种游标类型 type type_cursor is ref cursor; --声明变量指定游标类型 v_c ...
- 2018.5.30 Oracle数据库PLSQL编程---游标的使用
显示游标的步骤 /* 显示游标处理步骤 1.声明游标 语法结构:cursor 游标名称 is SQL 语句; 2.打开游标 语法结构:open游标名称; 3.提取数据 语法结构:fetch 4.关闭游 ...
- 【PLSQL】游标
Oracle中的SQL在执行时需要分配一块内存区域,这块内存区域叫做上下文区. 上下文区中记录了SQL语句的处理信息,这些信息包括:查询返回的数据行.查询所处理的数据的行号.指向共享池中的已分析的SQ ...
随机推荐
- 如何判断CPU的位数
CPU是16位,32位,还是64位,主要指的是数据总线(data bus)有多少位,16位数据总线表示CPU一次可以从内存取2个byte的数据,32位数据总线表示CPU一次可以从内存取4byte数据, ...
- JQuery easyui (1) Draggable(拖动)组件
很不习惯这种强迫式的学习,但谁叫我不是老师了,所以还是决定坚持练习,顺带为博客加点东西.虽然我还是很反感短时间内惯性的去熟悉一个工具. easyui做为一个封装了JQusey的UI插件,其实还是蛮好用 ...
- [转]设置MS Office Word for mac的默认显示比例
由于mac os的分辨率比较大,在PC上显示正常的word文档(显示比例100%),在mac下打开会很小,需要经常调整显示比例,如调到125%.130%或150%,可以通过下面方法来设置默认显示比例, ...
- Ecstore 2.0 报表显示空白
INSERT INTO `sdb_ectools_analysis` (`id`, `service`, `interval`, `modify`) VALUES (, ), (, ), (, ); ...
- PHP 获取客户端IP
function get_ip() { static $realIP; if (isset($_SERVER)){ if (isset($_SERVER["HTTP_X_FORWARDED_ ...
- pyspider安装后,点击run,报pyhton has stop working或python已停止运行的错误
问题解决虽然只有几句话,但是背后花了一天时间,各种FQ搜索. pyspider目测只支持32位的系统,所以你下载32位的python安装就行了,然后安装pyspider运行就没有问题了,坑爹啊---- ...
- [TYVJ] P1044 数字三角形
数字三角形 背景 Background 09年 USACO 11月月赛 铜牌第一道 描述 Description 示出了一个数字三角形. 请编一个程序计算从顶至底的某处的一条路径,使该路径所经过 ...
- FPGA系统中DRAM,SRAM,SDRAM,FLASH 区别(转)
原文:http://hi.baidu.com/abners/item/a9042ef35d3f005bc8f337f5 一般来说这几种存储器是一个nios系统都具有的,sram的好处是接口简单,速度快 ...
- C# 计划任务
计划任务 : 个人理解, 就是后台控制程序要求在一定的时间执行相应的任务. 直接上代码: 之前,因为工作需要. 要求每天在凌晨2:00,执行要做的数据 1.1 声明一个接口 Ijob 方法: 执行 ...
- poj 1001 求高精度幂
本题的测试用例十分刁钻,必须要考虑到很多的细节问题,在这里给出一组测试用例及运行结果: 95.123 12 548815620517731830194541.899025343415715973535 ...