`
weigang.gao
  • 浏览: 486198 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Oracle using

 
阅读更多

有如下表结构,数据如下:

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 中 Using 用法 Oracle 动态 SQL 介绍以及 Using 用法示例 在 Oracle 中,使用 Using 语句可以实现动态 SQL 的绑定变量,提高 SQL 语句的灵活性和安全性。本文将对 Oracle 中 Using 用法进行详细的介绍,并...

    connect to Oracle using JDBC

    Oracle数据库是世界上最流行的数据库管理系统之一,广泛应用于企业级应用中。Java Database Connectivity (JDBC) 是Java编程语言中用于与各种类型数据库交互的标准API。在本文中,我们将深入探讨如何使用JDBC连接到...

    Oracle RAC Database on Linux Using VirtualBox

    本手册详细介绍了通过Virtualbox安装Oracle RAC的方法。对于没有真实环境的学习者来说,在虚拟机里面安装RAC是很好的办法。但是之前在vmware上一直一成功实现共享存储。用oracle自己的virtualbox,完全没有问题。

    ORACLE透明网关访问mysql

    USING 'mysql201'; ``` 执行这条命令后,通过查询dblink测试数据,可以验证配置是否成功。 通过上述步骤,我们即可实现Oracle数据库通过透明网关访问MySQL数据库的目标。需要注意的是,在生产环境中,透明网关的...

    白皮书[英文]Oracle Database 1 2c Multitenant Snapshot Clones Using Oracle CloudFS

    官方资料:白皮书[英文]Oracle Database 1 2c Multitenant Snapshot Clones Using Oracle CloudFS Oracle Multitenant Architecture.;Oracle CloudFS Architecture;Oracle ASM Dynamic Volume Manager (ADVM);Oracle...

    oracle数据库链接

    在Oracle数据库管理中,数据库链接(Database Link)是一项关键功能,它允许用户在一个数据库实例上执行操作时,能够访问另一个远程数据库中的数据。这在分布式数据库环境中尤其重要,因为可以促进不同数据库之间的...

    ORACLE_建立DBLINK详细讲解.pdf

    USING 'BKSVR_248'; ``` 其中,`BKSVR` 是远程数据库的全局名称,`slarms` 是远程数据库的用户名,`oracle` 是密码,`BKSVR_248` 是在本地建立的连接到远程数据库的服务名。 3. **测试 DB-LINK 连接**:执行 `...

    Cloud Computing Using Oracle Application Express epub

    Cloud Computing Using Oracle Application Express 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 查看此书详细信息请在美国亚马逊官网搜索此书

    Oracle 11gR1 RAC On Linux Using NFS

    总之,Oracle 11gR1 RAC on Linux using NFS是一种高效、高可用的数据库解决方案,涉及多个领域的专业知识,包括数据库管理、操作系统、网络和存储。理解和掌握这些知识点对于成功部署和管理这样的系统至关重要。

    Data Science Using Oracle Data Miner and Oracle R Enterprise [2016]

    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 ...

    expdp异地备份全过程(非常详细)

    SQL&gt; create public database link dblink_test connect to system identified by oracle using 'vm_testdb'; 导出生产数据库中的 test 用户 使用 expdp 命令来导出生产数据库中的 test 用户。例如,可以使用以下...

    Oracle Order Management Using Oracle Workflow in Oracle Order Ma

    Oracle Order Management 使用 Oracle Workflow 在 Oracle Order Management 11i 中 Oracle Order Management 是一个关键的企业资源计划(ERP)模块,用于处理企业的订单生命周期管理。它提供了全面的功能,从订单...

    Install Oracle RAC 10g on Oracle Enterprise Linux Using VMware

    安装和配置Oracle RAC 10g on Oracle Enterprise Linux Using VMware的过程涉及多个关键步骤: #### 1. 硬件需求和概述 首先,需要明确硬件要求,包括足够的CPU、内存和存储空间,以及网络配置,确保虚拟机之间...

    基于C#连接Oracle数据库Oracle.ManagedDataAccess

    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 Using Oracle Process Manufacturing

    Oracle Process Manufacturing 使用指南 Oracle Process Manufacturing 是Oracle公司提供的一款针对流程制造业的专业解决方案,它与Oracle Manufacturing Scheduling结合使用,能够帮助企业管理复杂的生产流程,...

    Oracle Clusterware Administration and Deployment Guide

    Oracle Clusterware是Oracle公司推出的一种集群技术,它是Oracle数据库和应用软件高可用性解决方案的核心组成部分。11g Release 2(11.2)是该技术的一个重要版本。在进行Oracle Clusterware的管理与部署时,需要...

Global site tag (gtag.js) - Google Analytics