一、语法

execute immediate SQL语句/PLSQL代码块 into 变量 [using 参数1,参数2,……];

using后面的参数要与into后面的变量及变量的数据类型对应起来

在执行语句中SQL语句必须使用单引号括起来

DECLARE
V_EMP EMP%ROWTYPE;
BEGINEXECUTE IMMEDIATE 'SELECT * FROM EMP WHERE EMPNO=7369' INTO V_EMP;DBMS_OUTPUT.PUT_LINE(V_EMP.EMPNO);
END;

如果SQL语句过长,为了方便读写,也可以定义一个变量将SQL语句赋值给这个变量,并将这个变量放在执行语句中

DECLARE
V_EMP EMP%ROWTYPE;
V_SQL VARCHAR2(100);
BEGINV_SQL:='SELECT * FROM EMP WHERE EMPNO=7369';EXECUTE IMMEDIATE V_SQL INTO V_EMP;DBMS_OUTPUT.PUT_LINE(V_EMP.EMPNO);
END;

二、转义符

1.当定义number类型时

根据输入的员工编号查询

DECLARE
V_EMP EMP%ROWTYPE;
V_EMPNO NUMBER(10):=&员工编号;
V_SQL VARCHAR2(100);
BEGINV_SQL:='SELECT * FROM EMP WHERE EMPNO='||V_EMPNO;EXECUTE IMMEDIATE V_SQL INTO V_EMP;DBMS_OUTPUT.PUT_LINE(V_EMP.ename);
END;

2.当定义varchar2类型时

根据传入的员工姓名查询,用两个单引号转义一个单引号

DECLARE
V_EMP EMP% ROWTYPE;
V_ENAME VARCHAR2(20):='&员工姓名';
V_SQL VARCHAR2(100);
BEGINV_SQL:='SELECT * FROM EMP WHERE ENAME='''||V_ENAME||'''';EXECUTE IMMEDIATE V_SQL INTO V_EMP;DBMS_OUTPUT.PUT_LINE(V_EMP.EMPNO);
END;

3.q'[SQL语句]'

DECLARE
V_EMP EMP% ROWTYPE;
V_ENAME VARCHAR2(20):='&员工姓名';
V_SQL VARCHAR2(100);
BEGINV_SQL:=Q'[SELECT * FROM EMP WHERE ENAME=']'||V_ENAME||Q'[']';EXECUTE IMMEDIATE V_SQL INTO V_EMP;DBMS_OUTPUT.PUT_LINE(V_EMP.EMPNO);
END;

三、在代码块中添加DDL语句

DECLARE
V_SQL VARCHAR2(100);
TYPE V_TYPE IS RECORD(
V_ID NUMBER(4),
V_NAME VARCHAR2(20),
V_CLASS NUMBER(5)
);
V_STU V_TYPE;
BEGINV_SQL:='CREATE TABLE STUDENT (ID NUMBER(4),STU_NAME VARCHAR2(20),CLASS_NO NUMBER(10))';EXECUTE IMMEDIATE V_SQL;V_SQL:=Q'[INSERT INTO STUDENT VALUES(1,'张三',95033)]';EXECUTE IMMEDIATE V_SQL;V_SQL:='UPDATE STUDENT SET ID=2';EXECUTE IMMEDIATE V_SQL;V_SQL:='SELECT * FROM STUDENT';EXECUTE IMMEDIATE V_SQL INTO V_STU;V_SQL:='DELETE FROM STUDENT WHERE ID=2';--一般不用EXECUTE IMMEDIATE V_SQL;DBMS_OUTPUT.PUT_LINE(V_STU.V_ID||'-'||V_STU.V_NAME||'-'||V_STU.V_CLASS);
END;

PL/SQL学习笔记(二)—— 执行语句相关推荐

  1. PL/SQL学习笔记(二)

    定义并使用变量 PL/SQL有四种类型:标量类型,复合类型,引用类型(reference),LOB(Large Obejct)类型 一.标量类型 最常用的就是标量类型,是指只能存放单个数值的变量,包括 ...

  2. 判断题:oracle自带的sql语言环境是pl/sql,Oracle之PL/SQL学习笔记之数据类型(三)

    Oracle之PL/SQL学习笔记之数据类型(三) 所有的编程语言中变量是使用最频繁的.PL/SQL作为一个面向过程的数据库编程语言同样少不了变量,利用变量可以把PL/SQL块需要的参数传递进来,做到 ...

  3. Oracle之PL/SQL学习笔记之有名块练习

    2019独角兽企业重金招聘Python工程师标准>>> Oracle之PL/SQL学习笔记之有名块练习 存储过程案例: 案例1: 根据雇员姓名跟新雇员工资,如果雇员不存在输出没有该雇 ...

  4. PL/SQL学习笔记(四)

    这部分主要讲述在PL/SQL中如何访问oracle (一)检索单行数据 在PL/SQL嵌入select语句,使用方法: SELECT select_list INTO variable_name1,v ...

  5. PL/SQL学习笔记-常量变量及数据类型初步

    一:常量和变量 开始之前,还是照例做个经典的例子,如下: declare mydate varchar2(16) := 'hellow world'; begindbms_output.put_lin ...

  6. PL/SQL学习笔记之存储过程

    一:PL/SQL的两种子程序 子程序:子程序是执行一个特定功能.任务的程序模块.PL/SQL中有两种子程序:函数  和  过程. 函数:主要用于计算并返回一个值. 过程:没有直接返回值,主要用于执行操 ...

  7. SQL学习笔记——Select查询语句

    使用数据库和表的主要目的是存储数据以便在需要时进行检索.统计或组织输出. SELECT 语句,它是 T-SQL 的核心.从数据库中检索行,并允许从一个或多个表中选择一个 或多个行或列. 虽然 SELE ...

  8. PL/SQL学习笔记-循环控制与顺序控制

    一:LOOP...END LOOP 先看代码 declare v_flag number := 1; begin loop exit when v_flag>16;v_flag := v_fla ...

  9. PL/SQL学习笔记-过程

    一:创建和修改一个过程 create or replace procedure xland_proc (v_title in varchar2,v_int out number) is v_char ...

最新文章

  1. python 定时任务
  2. 怎么提升软件测试质量,【软件测试】涨姿势,测试总监亲授如何做测试质量管理...
  3. python在读写文件之前需要创建文件对象-Python对象序列化写入文件对象
  4. 以用户体验为导向的设计表现
  5. crossphp框架中,在模板中加载其他模板
  6. 资源放送丨《SQL条件等价改写秘笈》PPT视频
  7. MySQL日期处理-查询间隔数据
  8. rabbitmq原理 php,Rabbitmq基本原理
  9. JavaScript数据结构——字典(Dictionary)
  10. 从用户的角度看解决方案
  11. 禁止页面拖拽事件(数据什么的)
  12. JS 日期工具类-基于yDate
  13. 回忆一次面试Android研发的问题
  14. 关于Julia 和Matlab速度的比较!(以偏概全)。
  15. IT,大一,这里我有点建议
  16. No certificate for team ‘‘ matching ‘iPhone Distribution: VOVA TECH LIMITED ()‘ Select a different s
  17. 操作系统 - startx/xinit
  18. 商品ETF的分类及运作模式
  19. 学机器学习的基础课程
  20. 【CSS进阶】使用CSS gradient制作绚丽渐变纹理背景效果

热门文章

  1. idea 2021 快捷键
  2. 不做外卖没生意,做外卖没利润|餐饮行业如何打破魔咒?
  3. CentOS 6 安装 Nvidia 显卡驱动
  4. 【数据库考试】数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和物理设计
  5. 产品分享:Qt+Arm基于RV1126平台的内窥镜软硬整套解决方案(实时影像、冻结、拍照、录像、背光调整、硬件光源调整,其他产品也可使用该平台,如视频监控,物联网产品等等)
  6. MySQL建立外键出现Can't create table‘..’ (errno:150)问题(简单易懂版)
  7. 当我开始学习人工智能:人工智能的学派及研究目标
  8. 第 4 章 使用 CLI 命令管理 LVM
  9. [ESP32/ESP8266专题笔记-2]ubuntu下 编写第一个 ESP32开发板-Micropython程序
  10. css动画之上下晃动的div