oralce 存储过程 游标的使用
2017-10-23 10:52
204 查看
--基于存储过程 用户的增删改查操作
create or replace procedure insert_t_user
as
begin
insert into t_user values('','','');
end;
--存储过程的调用
call insert_t_user;
--带参数的存储过程
CREATE OR REPLACE PROCEDURE insert_emp_proc(myempno NUMBER,myename VARCHAR2,myjob VARCHAR2,mymgr NUMBER,mydate DATE,mysal NUMBER,mycomm NUMBER,mydeptno NUMBER)
AS
BEGIN
INSERT INTO emp VALUES(myempno,myename,myjob,mymgr,mydate,mysal,mycomm,mydeptno);
END;
--执行带参数的执行的存储过程
CALL insert_emp_proc(999,'三九系列','坑爹',7689,SYSDATE,1800,4000,30);
--更新数据存储过程
CREATE OR REPLACE PROCEDURE update_emp_proc(myempno IN NUMBER,myename IN VARCHAR2) AS
BEGIN
UPDATE emp SET ename=myename WHERE empno=myempno;
END;
-- 使用动态sql
CREATE OR REPLACE PROCEDURE update_emp_proc(myempno NUMBER,myename VARCHAR2) AS
mysql VARCHAR2(500);
BEGIN
mysql:='UPDATE emp SET ename=:1 WHERE empno=:2';
--立即执行存储过程 使用相应的参数
EXECUTE IMMEDIATE mysql USING myename,myempno;
END;
--
CALL update_emp_proc(999,'123');
--删除数据存储过程
CREATE PROCEDURE del_emp_proc(myemp NUMBER)
AS
BEGIN
DELETE emp WHERE empno=myemp;
END;
CALL del_emp_proc(999);
--查询数据存储过程
--查询单条数据
----查询数据存储过程
CREATE OR REPLACE PROCEDURE selname_emp_proc(myempno IN NUMBER,myname OUT VARCHAR2)
AS
BEGIN
SELECT ename INTO myname FROM emp WHERE empno=myempno;
dbms_output.put_line(myname);
END;
----调用
DECLARE
myname VARCHAR2(50);
BEGIN
selname_emp_proc(7788,myname);
END;
--
--PL/SQL 中 SELECT 语句只返回一行数据。如果超过一行数据,那么就要使用显式游标,
--INTO 子句中要有不 SELECT子句中相同列数量的变量。INTO 子句中也可以是记录变量。
--------用游标显示查询所有的结果
CREATE OR REPLACE procedure selAll_emp_proc
AS
CURSOR sel_emp IS SELECT * FROM emp;--定义游标,该游标指向查询结果
rowresult emp%ROWTYPE;
BEGIN
OPEN sel_emp;--打开游标
LOOP FETCH sel_emp INTO rowresult;--将游标中的值赋给rowresult
EXIT WHEN sel_emp%NOTFOUND;--判断:游标不存在时跳出循环
dbms_output.put_line('员工名:'||rowresult.ename||'工资:'||rowresult.sal);
END LOOP;
CLOSE sel_emp;--关闭游标
END;
--
CALL selAll_emp_proc();
--
for rowresult in sel_emp loop
dbms_output.put_line(c_row.empno||'-'||c_row.ename||'-'||c_row.job||'-'||c_row.sal);
end loop;
end;
create or replace procedure insert_t_user
as
begin
insert into t_user values('','','');
end;
--存储过程的调用
call insert_t_user;
--带参数的存储过程
CREATE OR REPLACE PROCEDURE insert_emp_proc(myempno NUMBER,myename VARCHAR2,myjob VARCHAR2,mymgr NUMBER,mydate DATE,mysal NUMBER,mycomm NUMBER,mydeptno NUMBER)
AS
BEGIN
INSERT INTO emp VALUES(myempno,myename,myjob,mymgr,mydate,mysal,mycomm,mydeptno);
END;
--执行带参数的执行的存储过程
CALL insert_emp_proc(999,'三九系列','坑爹',7689,SYSDATE,1800,4000,30);
--更新数据存储过程
CREATE OR REPLACE PROCEDURE update_emp_proc(myempno IN NUMBER,myename IN VARCHAR2) AS
BEGIN
UPDATE emp SET ename=myename WHERE empno=myempno;
END;
-- 使用动态sql
CREATE OR REPLACE PROCEDURE update_emp_proc(myempno NUMBER,myename VARCHAR2) AS
mysql VARCHAR2(500);
BEGIN
mysql:='UPDATE emp SET ename=:1 WHERE empno=:2';
--立即执行存储过程 使用相应的参数
EXECUTE IMMEDIATE mysql USING myename,myempno;
END;
--
CALL update_emp_proc(999,'123');
--删除数据存储过程
CREATE PROCEDURE del_emp_proc(myemp NUMBER)
AS
BEGIN
DELETE emp WHERE empno=myemp;
END;
CALL del_emp_proc(999);
--查询数据存储过程
--查询单条数据
----查询数据存储过程
CREATE OR REPLACE PROCEDURE selname_emp_proc(myempno IN NUMBER,myname OUT VARCHAR2)
AS
BEGIN
SELECT ename INTO myname FROM emp WHERE empno=myempno;
dbms_output.put_line(myname);
END;
----调用
DECLARE
myname VARCHAR2(50);
BEGIN
selname_emp_proc(7788,myname);
END;
--
--PL/SQL 中 SELECT 语句只返回一行数据。如果超过一行数据,那么就要使用显式游标,
--INTO 子句中要有不 SELECT子句中相同列数量的变量。INTO 子句中也可以是记录变量。
--------用游标显示查询所有的结果
CREATE OR REPLACE procedure selAll_emp_proc
AS
CURSOR sel_emp IS SELECT * FROM emp;--定义游标,该游标指向查询结果
rowresult emp%ROWTYPE;
BEGIN
OPEN sel_emp;--打开游标
LOOP FETCH sel_emp INTO rowresult;--将游标中的值赋给rowresult
EXIT WHEN sel_emp%NOTFOUND;--判断:游标不存在时跳出循环
dbms_output.put_line('员工名:'||rowresult.ename||'工资:'||rowresult.sal);
END LOOP;
CLOSE sel_emp;--关闭游标
END;
--
CALL selAll_emp_proc();
--
for rowresult in sel_emp loop
dbms_output.put_line(c_row.empno||'-'||c_row.ename||'-'||c_row.job||'-'||c_row.sal);
end loop;
end;
相关文章推荐
- 在Oralce存储过程中使用游标来逐行处理数据示例并执行调试
- 存储过程调用存储过程,存储过程调用函数,返回表表变量,游标使用
- Sqlserver中存储过程和游标的一些使用例子
- 关于Mysql使用存储过程,并且使用游标的Demo
- 编写存储过程返回的结果集在游标中使用java代码调用
- 存储过程使用游标变量返回结果集
- 存储过程使用游标变量返回结果集(推荐)
- 存储过程使用动态游标一例
- Oralce游标使用
- Mysql创建存储过程,使用游标Cursor循环更新
- 利用navicat创建存储过程、触发器和使用游标的简单实例
- mysql中使用存储过程,游标,定时任务
- 存储过程使用表变量或临时表代替游标Fetch实例,访问远程数据库
- 利用navicat创建存储过程、触发器和使用游标的简单实例
- mysql中使用存储过程,游标,定时任务
- MySQL 5.0 存储过程例子(使用了游标)
- Sqlserver中存储过程和游标的一些使用例子
- PostgreSQL 中存储过程中使用多游标(refcursor)
- 删除所有的用户表,存储过程,游标的应用,动态SQL的使用
- 利用navicat创建存储过程、触发器和使用游标的简单实例