有如下表结构,数据如下:
create table student( student_id number, name varchar2(30), birthday date, sex char(1), constraints pk_student_id primary key(student_id) );
1.静态SQL与动态SQL
Oracle编译PL/SQL程序块分为两个种:
其一为前期联编(early binding),即SQL语句在程序编译期间就已经确定,大多数的编译情况属于这种类型;
另外一种是后期联编(late binding),即SQL语句只有在运行阶段才能建立,例如当查询条件为用户输入时,
那么Oracle的SQL引擎就无法在编译期对该程序语句进行确定,只能在用户输入一定的查询条件后才能提交给SQL引擎进行处理。
通常,静态SQL采用前一种编译方式,而动态SQL采用后一种编译方式。
①动态SQL
动态SQL程序开发
理解了动态SQL编译的原理,也就掌握了其基本的开发思想。
动态SQL既然是一种”不确定”的SQL,那其执行就有其相应的特点。Oracle中提供了Execute immediate语句来执行动态SQL,语法如下:
Excute immediate 动态SQL语句 using 绑定参数列表 returning into 输出参数列表;
对这一语句作如下说明:
1) 动态SQL是指DDL和不确定的DML(即带参数的DML)
2) 绑定参数列表为输入参数列表,即其类型为in类型,在运行时刻与动态SQL语句中的参数(实际上占位符,可以理解为函数里面的形式参数)进行绑定。
3) 输出参数列表为动态SQL语句执行后返回的参数列表。
4) 由于动态SQL是在运行时刻进行确定的,所以相对于静态而言,其更多的会损失一些系统性能来换取其灵活性。
为了更好的说明其开发的过程,下面列举一个实例:
declare v_name student.name%type; type WeckCusorTyep IS REF cursor; c_name WeckCusorTyep; begin open c_name for 'select t.name from student t'; --动态SQL,加了引号就成了Dynamic SQL loop fetch c_name into v_name; exit when c_name%notfound; dbms_output.put_line(v_name); end loop; close c_name; end;
②静态SQL
declare v_name student.name%type; type WeckCusorTyep IS REF cursor; c_name WeckCusorTyep; begin open c_name for select t.name from student t; --静态SQL,去掉引号就成了Static SQL loop fetch c_name into v_name; exit when c_name%notfound; dbms_output.put_line(v_name); end loop; close c_name; end;
2.Oracle的Using用法
①在使用动态SQL的时候,可以使用Using来传参
--oracle using --变量以v开头,eg:v_name --游标以c开头,eg:c_name declare v_name student.name%type; TYPE WeakCurTyp IS REF CURSOR; -- define weak REF CURSOR type c_name WeakCurTyp; -- declare cursor variable begin open c_name for 'select t.name from student t where t.birthday < :1' using to_date('19910109','yyyyMMdd'); --动态SQL,并且可以Using传参,:1 是占位符。 loop fetch c_name into v_name; exit when c_name%notfound; dbms_output.put_line(v_name); end loop; end;
Oracle的Using参考:http://blog.csdn.net/robertkun/article/details/10562807
相关推荐
Oracle 中 Using 用法 Oracle 动态 SQL 介绍以及 Using 用法示例 在 Oracle 中,使用 Using 语句可以实现动态 SQL 的绑定变量,提高 SQL 语句的灵活性和安全性。本文将对 Oracle 中 Using 用法进行详细的介绍,并...
Oracle数据库是世界上最流行的数据库管理系统之一,广泛应用于企业级应用中。Java Database Connectivity (JDBC) 是Java编程语言中用于与各种类型数据库交互的标准API。在本文中,我们将深入探讨如何使用JDBC连接到...
本手册详细介绍了通过Virtualbox安装Oracle RAC的方法。对于没有真实环境的学习者来说,在虚拟机里面安装RAC是很好的办法。但是之前在vmware上一直一成功实现共享存储。用oracle自己的virtualbox,完全没有问题。
USING 'mysql201'; ``` 执行这条命令后,通过查询dblink测试数据,可以验证配置是否成功。 通过上述步骤,我们即可实现Oracle数据库通过透明网关访问MySQL数据库的目标。需要注意的是,在生产环境中,透明网关的...
官方资料:白皮书[英文]Oracle Database 1 2c Multitenant Snapshot Clones Using Oracle CloudFS Oracle Multitenant Architecture.;Oracle CloudFS Architecture;Oracle ASM Dynamic Volume Manager (ADVM);Oracle...
在Oracle数据库管理中,数据库链接(Database Link)是一项关键功能,它允许用户在一个数据库实例上执行操作时,能够访问另一个远程数据库中的数据。这在分布式数据库环境中尤其重要,因为可以促进不同数据库之间的...
USING 'BKSVR_248'; ``` 其中,`BKSVR` 是远程数据库的全局名称,`slarms` 是远程数据库的用户名,`oracle` 是密码,`BKSVR_248` 是在本地建立的连接到远程数据库的服务名。 3. **测试 DB-LINK 连接**:执行 `...
Cloud Computing Using Oracle Application Express 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 查看此书详细信息请在美国亚马逊官网搜索此书
总之,Oracle 11gR1 RAC on Linux using NFS是一种高效、高可用的数据库解决方案,涉及多个领域的专业知识,包括数据库管理、操作系统、网络和存储。理解和掌握这些知识点对于成功部署和管理这样的系统至关重要。
Data Science Using Oracle Data Miner and Oracle R Enterprise: Transform Your Business Systems into an Analytical Powerhouse English | 8 Feb. 2017 | ISBN: 1484226135 | 289 Pages | PDF | 12.99 MB ...
SQL> create public database link dblink_test connect to system identified by oracle using 'vm_testdb'; 导出生产数据库中的 test 用户 使用 expdp 命令来导出生产数据库中的 test 用户。例如,可以使用以下...
Oracle Order Management 使用 Oracle Workflow 在 Oracle Order Management 11i 中 Oracle Order Management 是一个关键的企业资源计划(ERP)模块,用于处理企业的订单生命周期管理。它提供了全面的功能,从订单...
安装和配置Oracle RAC 10g on Oracle Enterprise Linux Using VMware的过程涉及多个关键步骤: #### 1. 硬件需求和概述 首先,需要明确硬件要求,包括足够的CPU、内存和存储空间,以及网络配置,确保虚拟机之间...
using Oracle.ManagedDataAccess.Client; public class OracleConnectionHelper { private static string connectionString = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=your_host)...
Oracle Process Manufacturing 使用指南 Oracle Process Manufacturing 是Oracle公司提供的一款针对流程制造业的专业解决方案,它与Oracle Manufacturing Scheduling结合使用,能够帮助企业管理复杂的生产流程,...
Oracle Clusterware是Oracle公司推出的一种集群技术,它是Oracle数据库和应用软件高可用性解决方案的核心组成部分。11g Release 2(11.2)是该技术的一个重要版本。在进行Oracle Clusterware的管理与部署时,需要...