--=========本地动态sql:(采用execute immediate) --根据业务的需要,如果输入不同查询条件, --则生成不同的执行SQL查询语句,对于这种情况需要使用动态SQL来完成 --Notice : PLSQL只能执行:DML(insert ,update , delete ) ,TCL(commit)语句 ---------执行DDL语句,采用execute immediate --首先看下如下PLSQL程序 declare sql_stat VARCHAR2(100); v_commit varchar2(20); begin -- 静态SQL :第一次运行时进行编译,而后续再次调用,则不再编译该过程。 -- 即一次编译,多次调用,使用的相同的执行计划 insert into emp values ( 8080,'out','developer',7900,sysdate,8999.9,2222,10); -- 动态SQL: 每次运行时需要事先对其编译。即多次调用则需要多次编译.(结尾不能要 ; 号); sql_stat :='DELETE FROM emp WHERE empno=8080'; --使用动态SQL来删除记录 v_commit := 'commit'; EXECUTE IMMEDIATE sql_stat; --每次执行 每次编译 EXECUTE IMMEDIATE v_commit; END; -----执行过程: ----1.pl/sql程序分为编译和执行阶段 ----2.sql语句分为解析(编译) 和执行 ----3.静态sql语句编译(分析) 发生在pl/sql程序的编译阶段. ----4.动态SQL( 用'' 的语句) 是在plsql执行的时候 才会进行分析和执行 --分析下面的SQL declare begin execute immediate 'create table t1 (c1 number(2) )'; insert into t1 values 1; commit; end; -- ERROR:表或者视图不存在 -- why ? --在PLSQL编译阶段 ''中的内容当成字符串,不会解析成SQL -- insert 是静态SQL,在PLSQL编译阶段,会完成语句的分析(语句语法,提及对象,确认对象权限) -- 但是在提及对象的时候发现 t1 不存在,所以会出错. ------修改如下---- declare begin execute immediate 'create table t1 (c1 number(2) )'; execute immediate 'insert into t1 values (1)'; execute immediate 'commit'; end; -- ok:分析 --在PLSQL编译阶段 create , insert , commit 都是字符段,不会解析SQL --在PLSQL执行阶段,完成 create , insert ,commit的解析和执行操作 --====================DML语句+参数操作(using子句)==================== -- 对于使用了参数传入的动态SQL,需要使用USING子句来指明传入的参数 -- 在DML语句中使占位符, --占位符: 用以冒号开头,紧跟任意字母或数字表示 -- 因此在使用EXECUTE IMMEDIATE使用USING子句为其指定其参数。 -- DDL语句不能使用 占位符 declare v_c1 number(2) := 1; v_c2 varchar2(10) :='aa'; begin --error: PLSQL不支持 静态DDL语句 sql不能执行 --create table t1 (c1 number(1), c2 varchar2(10) ;--error -- 动态SQL 创建表 execute immediate 'create table t1 (c1 number(1), c2 varchar2(10))'; -- 动态SQL插入+ using参数 -- DML语句中使用了占位符( :c1, :c2 ) execute immediate 'insert into t1 values'|| ' ( :c1 , :c2)' using v_c1 , v_c2;--为占位符指定参数或值 execute immediate 'commit'; end; --======Returning 子句 +DML语句============== --更新7900的sal,返回更新后的sal DECLARE salary number(6, 2); sql_stat varchar2(100); v_deptno number(4) :=7900; BEGIN sql_stat := 'UPDATE emp SET sal = 999.99' || ' WHERE empno = :eno RETURNING sal INTO :salary'; --使用了占位符:eno,:salary,以及RETURNING子句 EXECUTE IMMEDIATE sql_stat USING v_deptno RETURNING INTO salary; --必须使用USING及RETURNING子句 COMMIT; dbms_output.put_line('salary: ' || salary); END; 更详细的参见:那些大神博客篇 第一个链接
相关推荐
Oracle数据库PL/SQL Developer客户端是数据库管理员和开发人员常用的工具,它专为Oracle数据库系统设计,提供了便捷的界面来编写、测试和调试PL/SQL代码。这个工具的强大之处在于其全面的功能集,允许用户进行数据库...
plsql developer连接远程数据库(本地不用安oracle)
在Oracle数据库管理中,PL/SQL Developer是一款非常实用的工具,它专为Oracle数据库的存储程序单元开发设计,包括过程、函数、包、触发器等的编写和调试。这款工具以其用户友好、代码质量优化以及高生产力而受到青睐...
### Oracle数据库利用PL/SQL开发工具进行数据提取详解 #### 一、Oracle数据库与PL/SQL简介 在深入了解如何利用PL/SQL Developer进行数据提取之前,我们先来简单了解一下Oracle数据库以及PL/SQL的基本概念。 - **...
Oracle数据库是世界上最流行的数据库管理系统之一,SQL(Structured Query Language)是用于管理关系数据库的标准语言,而PL/SQL是Oracle数据库特有的编程语言,扩展了SQL的功能,使得能够编写复杂的存储过程和...
通过这些学习材料,初学者不仅可以了解Oracle数据库的基本概念,还能熟练掌握SQL查询语言和PL/SQL编程,从而在实际工作中有效地管理和操作Oracle数据库。对于希望提升数据库技能或准备Oracle相关认证的人来说,这些...
在Oracle数据库中,PL/SQL(Procedural Language/Structured Query Language)是一种结合了SQL语句和过程式编程语言的特性,用于编写数据库应用程序的语言。本资料主要关注PLSQL编程以及在Oracle中创建和使用存储...
数据库开发 Oracle数据库 SQL开发教程 第01章 Oracle数据库基础(共60页).pdf 数据库开发 Oracle数据库 SQL开发教程 第02章 编写简单的查询语句(共34页).pdf 数据库开发 Oracle数据库 SQL开发教程 第03章 限制...
其中,"plsql"通常指的是Oracle的PL/SQL Developer,这是一个强大的第三方工具,专为开发和管理Oracle数据库的PL/SQL代码而设计。它提供了代码编辑、调试、数据库对象浏览、版本控制等多种功能,极大提高了开发效率...
### Oracle数据库PL/SQL存储过程详解 #### 一、存储过程概述 **Oracle存储过程**是一种可以在Oracle数据库中存储并可被多次调用的PL/SQL代码块。它由一系列的PL/SQL语句组成,可以包含控制流程、变量声明等,能够...
Oracle数据库开发SQL与PLSQL源码
Oracle数据库是全球领先的企业级数据库管理系统之一,支持SQL(结构化查询语言)和PLSQL(过程化SQL)。文档中强调了SQL*Plus这一Oracle自带的命令行界面工具,以及SQL和PLSQL的使用实例,这对于数据库管理和应用...
2-2-Oracle数据库知识 PLSQL介绍 共69页.ppt 3-1-Oracle数据库知识 PLSQL控制结构 共25页.ppt 4-1-异常处理 共87页.ppt 4-2-过程与函数 共62页.ppt 4-3-在PLSql中使用sql 共98页.ppt 5-1-DistributedDatabaseSystem...
PLSQL Developer是一款强大的Oracle数据库开发工具,而Oracle 12c是Oracle公司推出的数据库服务器版本。在使用PLSQL Developer 12.0.7连接Oracle 12c数据库时,首选项配置文件扮演了关键角色,它允许用户自定义连接...
标题中的“不安装oracle使用plsql”意味着要在没有Oracle数据库客户端的情况下使用PL/SQL Developer这一工具。这通常通过Oracle的Instant Client实现,该组件提供了一种轻量级的解决方案,允许用户连接到Oracle...
Oracle数据库中的PL/SQL(Procedural Language/Structured Query Language)是一种强大的编程语言,它将SQL的查询功能与过程式编程语言的控制结构相结合,为数据库管理提供了更高级别的抽象和控制。PL/SQL是Oracle...
标题中的“无需安装oracle客户端可以直接使用plsql连接oracle数据库”是指使用PL/SQL Developer这款工具进行Oracle数据库管理,而不需要在本地系统上完整安装Oracle客户端软件。PL/SQL Developer是Allround ...
Oracle数据库是广泛应用于企业级应用的数据存储系统,而PL/SQL Developer(通常简称为PLSQL)是一款便捷的数据库管理工具,特别适合开发人员和DBA进行数据库查询、管理及开发工作。在某些情况下,用户可能不想或不能...
### 使用PL/SQL连接远程Oracle数据库(无需安装本地Oracle客户端) 在进行远程Oracle数据库连接时,经常遇到的一个挑战是如何在没有本地Oracle客户端的情况下实现这一目标。本文将详细介绍如何使用PL/SQL Developer...
PLSQL,全称为“Procedural Language/Structured Query Language”,是Oracle数据库系统中用于扩展SQL功能的一种编程语言。它结合了SQL的查询能力与过程式编程语言的特点,为数据库开发提供了一个强大的工具集。在...