1、oracle 存储过程的基本语法 及注意事项
http://www.cnblogs.com/happyday56/archive/2007/07/05/806830.html
2、ORACLE中带参数、REF游标及动态SQL实例
--===============带参数的游标==================--
DECLARE
dept_code emp.deptno%TYPE; --声明列类型变量三个
emp_code emp.empno%TYPE;
emp_name emp.ename%TYPE;
CURSOR emp_cur(deptparam NUMBER) IS
SELECT empno, ename FROM EMP WHERE deptno = deptparam; --声明显示游标
BEGIN
dept_code := &部门编号; --请用户输入想查看的部门编号
OPEN emp_cur(dept_code); --打开游标
LOOP
--死循环
FETCH emp_cur
INTO emp_code, emp_name; --提取游标值赋给上面声明的变量
EXIT WHEN emp_cur%NOTFOUND; --如果游标里没有数据则退出循环
DBMS_OUTPUT.PUT_LINE(emp_code || '' || emp_name); --输出查询
END LOOP;
CLOSE emp_cur; --关闭游标
END;
--=================REF游标==================--
ACCEPT tab FROMPT '你想查看什么信息?员工(E)或部门信息(D):'; --使用ACCEPT命令弹出对话框让用户输入数据
DECLARE
TYPE refcur_t IS REF CURSOR; --声明REF游标类型
refcur refcur_t; --声明REF游标类型的变量
pid NUMBER;
p_name VARCHAR2(100);
selection VARCHAR2(1) := UPPER(SUBSTR('&tab', 1, 1)); --截取用户输入的字符串并转换为大写
BEGIN
IF selection = 'E' THEN
--如果输入的是'E',则打开refcurr游标,并将员工表查询出来赋值给此游标
OPEN refcur FOR
SELECT EMPNO ID, ENAME NAME FROM EMP;
DBMS_OUTPUT.PUT_LINE('=====员工信息=====');
ELSIF selection = 'D' THEN
--如果输入是'D',则打开部门表
OPEN refcur FOR
SELECT deptno id, dname name FROM DEPT;
DBMS_OUTPUT.PUT_LINE('=====部门信息======');
ELSE
--否则返回结束
DBMS_OUTPUT.PUT_LINE('请输入员工信息(E)或部门信息(D)');
RETURN;
END IF;
FETCH refcur
INTO pid, p_name; --提取行
WHILE refcur%FOUND LOOP
DBMS_OUTPUT.PUT_LINE('#' || pid || ':' || p_name);
FETCH refcur
INTO pid, p_name;
END LOOP;
CLOSE refcur; --关闭游标
END;
--===================动态SQL=================--
VARIABLE maxsal NUMBER; --声明变量
EXECUTE :maxsal := 2500; --执行引用并给变量赋值
DECLARE
r_emp EMP%ROWTYPE; --声明一个行类型变量
TYPE c_type IS REF CURSOR; --声明REF游标类型
cur c_type; --声明REF游标类型的变量
p_salary NUMBER; --声明一个标量变量
BEGIN
p_salary := :maxsal; --引用变量
--使用USING语句将引用到的值传给动态SQL语句'SAL >: 1'中的'1'
OPEN cur FOR 'SELECT * FROM EMP WHERE SAL >: 1 ORDER BY SAL DESC'
USING p_salary;
DBMS_OUTPUT.PUT_LINE('薪水大于' || p_salary || '的员工有:');
LOOP
FETCH cur
INTO r_emp;
EXIT WHEN cur%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('编号:' || r_emp.empno || '姓名:' || r_emp.ename ||
'薪水:' || r_emp.sal);
END LOOP;
CLOSE cur; --关闭游标
END;
分享到:
相关推荐
适合sqlserver数据库初学者,实验三视图和游标操作实验源码
学习之用,游标操作多个数据库 学习之用,游标操作多个数据库 学习之用,游标操作多个数据库
sqlserver游标操作.txt
实验五 游标操作实验.docx
计算机后端-PHP视频教程. php与mysql加强- 04. php加强42-数组游标操作.wmv
自定义分割函数,可传参。游标调用函数方法进行数据导入从表操作。
sqlserver中触发器+游标操作实现,需要的朋友可以参考下
主要介绍了MongoDB入门教程之聚合和游标操作介绍,聚合和游标可以说是MongoDB中的高级操作了,需要的朋友可以参考下
Mysql游标(循环操作)
本篇文章是对MySQL游标的具体使用进行了详细的分析介绍,需要的朋友参考下 测试表level 代码如下: createtabletest.level(namevarchar(20)); 再insert些数据; 初始化 代码如下: ...
最近遇到这样的问题,在MySQL的存储过程中,游标操作时,需要执行一个conitnue的操作.众所周知,MySQL中的游标循环操作常用的有三种,LOOP,REPEAT,WHILE.三种循环,方式大同小异.以前从没用过,所以记下来,方便以后查阅. 1....
循环遍历逐行操作
06-游标操作 07-固定集合 07-索引 08-备份与恢复 08-用户管理 09-mongoDB备份与恢复 09-安全和认证 10-replication复制集 10-主从复制 11-shard分片 11-分片 12-使用java操作mongodb
游标是从表中检索出结果集,从中每次指向一条记录进行交互的机制。 作用 指定结果集中特定行的位置。 基于当前的结果集位置检索一行或... -- 游标操作使用循环,但是在操作之前必须先将游标打开 For Empinfo In My
一个对表进行操作的T-SQL语句通常都可产生或处理一组记录,但是许多应用程序,尤其是T-SQL嵌入的主语言,通常不能把整个结果集作为一个单元来处理,这些应用程序就需要用一种机制来保证每次处理结果集中的一行或几行...
利用游标对不同的数据库进行批量操作数据 是在存储过程中执行的所有操作里面讲解了游标如何使用,怎样访问其它数据库的表及操作,
0-150mm游标卡尺操作规程[参照].pdf
游标卡尺的使用.ppt
oracle数据库的游标详述,以及各游标相关信息的具体代码示例。可以帮助初学者以及数据库管理员更好的理解和学习游标的使用和操作。