PL/SQL学习笔记(二)—— 执行语句
一、语法
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学习笔记(二)—— 执行语句相关推荐
- PL/SQL学习笔记(二)
定义并使用变量 PL/SQL有四种类型:标量类型,复合类型,引用类型(reference),LOB(Large Obejct)类型 一.标量类型 最常用的就是标量类型,是指只能存放单个数值的变量,包括 ...
- 判断题:oracle自带的sql语言环境是pl/sql,Oracle之PL/SQL学习笔记之数据类型(三)
Oracle之PL/SQL学习笔记之数据类型(三) 所有的编程语言中变量是使用最频繁的.PL/SQL作为一个面向过程的数据库编程语言同样少不了变量,利用变量可以把PL/SQL块需要的参数传递进来,做到 ...
- Oracle之PL/SQL学习笔记之有名块练习
2019独角兽企业重金招聘Python工程师标准>>> Oracle之PL/SQL学习笔记之有名块练习 存储过程案例: 案例1: 根据雇员姓名跟新雇员工资,如果雇员不存在输出没有该雇 ...
- PL/SQL学习笔记(四)
这部分主要讲述在PL/SQL中如何访问oracle (一)检索单行数据 在PL/SQL嵌入select语句,使用方法: SELECT select_list INTO variable_name1,v ...
- PL/SQL学习笔记-常量变量及数据类型初步
一:常量和变量 开始之前,还是照例做个经典的例子,如下: declare mydate varchar2(16) := 'hellow world'; begindbms_output.put_lin ...
- PL/SQL学习笔记之存储过程
一:PL/SQL的两种子程序 子程序:子程序是执行一个特定功能.任务的程序模块.PL/SQL中有两种子程序:函数 和 过程. 函数:主要用于计算并返回一个值. 过程:没有直接返回值,主要用于执行操 ...
- SQL学习笔记——Select查询语句
使用数据库和表的主要目的是存储数据以便在需要时进行检索.统计或组织输出. SELECT 语句,它是 T-SQL 的核心.从数据库中检索行,并允许从一个或多个表中选择一个 或多个行或列. 虽然 SELE ...
- PL/SQL学习笔记-循环控制与顺序控制
一:LOOP...END LOOP 先看代码 declare v_flag number := 1; begin loop exit when v_flag>16;v_flag := v_fla ...
- PL/SQL学习笔记-过程
一:创建和修改一个过程 create or replace procedure xland_proc (v_title in varchar2,v_int out number) is v_char ...
最新文章
- python 定时任务
- 怎么提升软件测试质量,【软件测试】涨姿势,测试总监亲授如何做测试质量管理...
- python在读写文件之前需要创建文件对象-Python对象序列化写入文件对象
- 以用户体验为导向的设计表现
- crossphp框架中,在模板中加载其他模板
- 资源放送丨《SQL条件等价改写秘笈》PPT视频
- MySQL日期处理-查询间隔数据
- rabbitmq原理 php,Rabbitmq基本原理
- JavaScript数据结构——字典(Dictionary)
- 从用户的角度看解决方案
- 禁止页面拖拽事件(数据什么的)
- JS 日期工具类-基于yDate
- 回忆一次面试Android研发的问题
- 关于Julia 和Matlab速度的比较!(以偏概全)。
- IT,大一,这里我有点建议
- No certificate for team ‘‘ matching ‘iPhone Distribution: VOVA TECH LIMITED ()‘ Select a different s
- 操作系统 - startx/xinit
- 商品ETF的分类及运作模式
- 学机器学习的基础课程
- 【CSS进阶】使用CSS gradient制作绚丽渐变纹理背景效果
热门文章
- idea 2021 快捷键
- 不做外卖没生意,做外卖没利润|餐饮行业如何打破魔咒?
- CentOS 6 安装 Nvidia 显卡驱动
- 【数据库考试】数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和物理设计
- 产品分享:Qt+Arm基于RV1126平台的内窥镜软硬整套解决方案(实时影像、冻结、拍照、录像、背光调整、硬件光源调整,其他产品也可使用该平台,如视频监控,物联网产品等等)
- MySQL建立外键出现Can't create table‘..’ (errno:150)问题(简单易懂版)
- 当我开始学习人工智能:人工智能的学派及研究目标
- 第 4 章 使用 CLI 命令管理 LVM
- [ESP32/ESP8266专题笔记-2]ubuntu下 编写第一个 ESP32开发板-Micropython程序
- css动画之上下晃动的div