使用execute immediate处理DDL操作:
create or replace procedure drop_table(table_name in varchar2)
is
sql_statement varchar2(100);
begin
sql_statement := 'drop table '|| table_name;
execute immediate sql_statement;
end;
/
调用:SQL> exec drop_table('demo'); 删除表
------------------------------------------------------------------------------------------------
DML操作:
使用无符号占位符和returing语句:
begin
execute immediate 'update emp set sal = sal + 1000 where deptno = 30';
end;
/
有符号占位符:
begin
execute immediate 'update emp set sal = (sal+:addsal) where deptno = :dno' using &1,&2;
end;
/
有符号占位符,有returing子句:
declare
salary number(6,2);
begin
execute immediate 'update emp set sal = (sal+:addsal) where '||
'empno = :dno returning sal into :salary' using &1,&2 returning into salary;
dbms_output.put_line('修改后的工资:' || salary);
end;
/
处理单行查询:
declare
salary number(6,2);
begin
execute immediate 'select sal from emp where empno = :eno' into salary using &1;
dbms_output.put_line('雇员的工资:' || salary);
end;
/
------------------------------------------------------------------------------------------------
处理多行查询
declare
type emp_cursor_typ is ref cursor;--定义游标变量类型
emp_cursor emp_cursor_typ;--声明游标变量
emp_record emp%rowtype;--记录
sql_stat varchar2(100);
begin
sql_stat := 'select * from emp where deptno=:dno';
open emp_cursor for sql_stat using &dno;--打开游标
loop
fetch emp_cursor into emp_record;--提取数据
exit when emp_cursor%notfound;
dbms_output.put_line('雇员名:'||emp_record.ename);
end loop;
end;
/
批量提取:
declare
type ename_table_type is table of emp.ename%type index by binary_integer;
type sal_table_type is table of emp.sal%type index by binary_integer;
ename_table ename_table_type;
sal_table sal_table_type;
sql_stat varchar2(100);
begin
sql_stat := 'update emp set sal = sal + 500 where deptno=:dno' ||
' returning ename,sal into :name,:salary';
execute immediate sql_stat using &dno returning bulk collect into
ename_table, sal_table;
for i in 1..ename_table.count loop
dbms_output.put_line('雇员'||ename_table(i)||'的新工资为:'||sal_table(i));
end loop;
end;
/
使用fetch的批量:
declare
type emp_cursor_type is ref cursor;
emp_cursor emp_cursor_type;
type ename_table_type is table of emp.ename%type index by binary_integer;
ename_table ename_table_type;
sql_stat varchar2(100);
begin
sql_stat := 'select ename from emp where job=:title';
open emp_cursor for sql_stat using '&job';
fetch emp_cursor bulk collect into ename_table;--批量提取
for i in 1..ename_table.count loop
dbms_output.put_line(ename_table(i));
end loop;
end;
/
forall中使用bulk子句:
declare
type ename_table_type is table of emp.ename%type;
type sal_table_type is table of emp.sal%type;
ename_table ename_table_type;
sal_table sal_table_type;
sql_stat varchar2(100);
begin
ename_table := ename_table_type('SCOTT','SMITH','CLARK');
sql_stat := 'update emp set sal = sal + 500 where ename =:1 returning sal into :2';
forall i in 1..ename_table.count --forall
execute immediate sql_stat using ename_table(i) returning bulk collect into sal_table;
for j in 1..ename_table.count loop
dbms_output.put_line('雇员:'||ename_table(j) ||'的新工资为:'||sal_table(j));
end loop;
end;
/
分享到:
相关推荐
根据提供的文件信息,我们可以归纳出一系列关于...以上内容涵盖了Oracle数据库中SQL与PL/SQL的基础知识和常用功能,对于学习和复习都非常有用。理解并熟练掌握这些概念和技术,将有助于提高数据库管理和开发的能力。
Oracle PL/SQL是一种在Oracle数据库环境中用于开发存储过程、函数、触发器和其他数据库对象的编程语言。它是SQL的扩展,提供了更高级别的控制结构和流程逻辑,使得数据库管理与应用程序开发更加灵活和强大。 PL/SQL...
在Oracle数据库环境中,PL/SQL是一种强大的编程语言,它扩展了SQL的功能,使得数据库操作更加灵活和高效。本文将深入探讨PL/SQL程序设计中的一些关键知识点,包括基本语法、记录类型、流程控制、游标使用、异常处理...
Oracle数据库是世界上最广泛使用的数据库系统之一,其PL/SQL(Procedural Language/Structured Query Language)编程接口,也就是我们常说的PROC,是Oracle特有的、用于数据库操作的强大编程语言。"Oracle第一天练习...
同时,C语言提供了指针这一强大工具,让我们可以直接操作内存,实现数据结构的动态管理和高效操作。 课后习题通常涵盖以下几个方面: 1. **基本操作实现**:包括数据元素的插入、删除、查找等操作,这需要理解每个...
2. 1Z0-007 Note.doc:1Z0-007是Oracle Certified Associate, Oracle Database 12c Administrator Certified Professional的考试代码,这个文档可能是针对该考试的复习笔记或学习指南,包含PL/SQL部分的要点,如数据...
Oracle开发不仅涉及到SQL语言的使用,还包括PL/SQL编程、数据库设计、性能优化等多个方面。1000.jpg可能是一张包含关键概念或流程图的图片,用于辅助理解复杂的Oracle架构或操作步骤。新建 Microsoft PowerPoint ...
- **PL/SQL**(Procedural Language for SQL)是一种过程化SQL扩展语言,用于实现复杂的数据库操作。 #### PL/SQL块组成 1. **选项A**:PL/SQL支持游标操作和事务命令,这是正确的。 2. **选项B**:声明部分在PL/...
Oracle 选择题复习(带答案) 本资源摘要信息涵盖了 Oracle 数据库的多个方面,包括数据库启动和关闭、参数文件、控制文件、表空间、PL/SQL 编程、异常处理、数据库性能等。 参数文件 * 在参数文件中,以 # 符号...
在准备考试或复习相关知识点时,理解并掌握每一项基本概念都是至关重要的,这有助于提升解决问题的能力和编写高质量代码的能力。 综上所述,“ssd5-exam1选择题题库”覆盖了C++编程语言中的多个核心知识点,包括...
在上述的复习资料中,主要涉及了两个重要的PL/SQL编程概念:循环和异常处理。 1. 循环: - 简单Loop循环、While循环和For循环是PL/SQL中的基本控制结构,用于重复执行一段代码直到满足特定条件为止。 - 任务是...
PL/SQL SQL语言复习笔记 PL/SQL 是一种 procedural language,用于处理和操作数据库中的数据。它是 Structured Query Language(SQL)的扩展,提供了更多的编程功能和控制能力。 SQL 语言的发展 SQL 语言的发展...
- **特性**:使用PL/SQL作为其过程化SQL语言,适用于大型企业级应用。 - **平台**:可以在多种操作系统上运行,包括Unix、Linux等。 3. **MySQL** - **特性**:轻量级且易于安装配置,适合小型到中型的应用。 -...
本复习资料主要涵盖了Oracle中的数据操作语言(DML)和过程化SQL(PL/SQL)的相关实例,这对于理解和掌握Oracle数据库的操作至关重要。 1. 数据操作语言(DML): DML是Oracle中用于插入、更新、删除和查询数据的...
oracle PL/sql语言复习资料,很全的oracle函数,sql语句,以及游标,存储过程,触发器等复习资料.
本题涉及到的知识点涵盖了Oracle数据库的基础概念、SQL语法、数据类型、数据库对象以及PL/SQL编程。 1. **Oracle数据库应用**:Oracle数据库的应用主要分为开发和管理两大部分。开发主要涉及编写SQL和PL/SQL代码来...
"ACCP6.0 S1考前理论部分"是一个针对ACCP(Advanced Certified Computer Professional)6.0认证考试第一阶段的复习资料集。这个大型题库涵盖了S1的所有理论知识,旨在帮助考生全面掌握和理解相关概念,为考试做好...