Oracle PL/SQL使用动态SQL

本文介绍了Oracle PL/SQL中的动态SQL使用,包括无参数、有参数的非查询和查询情况。动态SQL允许在运行时构建和执行SQL语句,通过`execute immediate`关键字实现。在有查询的情况下,如果需要接收结果,需使用`into`关键字配合预定义变量。同时,文章提到了字符串中的单引号转义以及如何使用参数和变量。对于查询结果,要求必须为一条记录,且查询列与变量数据类型兼容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

动态SQL  意思是字符串的内容的内容当做SQL来执行
语法: execute immediate '字符串内容'
execute 存储过程(参数)


|| 连接符 把左右两边的字符串的字符串连起来,合起来一个字符串 count +


遇到的情况和对策:
1 非查询,无参数
execute immediate '字符串';
 execute immediate 'drop table Customer';


2 非查询,有参数
SQL中,用 :变量名 (代表一个参数,随便取名字)
execute immediate '动态SQL' using 实参列表
注意:
 1,实参列表中,如果有多个参数,用逗号隔开
 2,实参按照顺序依次替代SQL中的参数,不看参数名
 3,实参的数据类型要符号SQL中参数的要求


-- Created on 2017/2/13 by ADMINISTRATOR 
declare 
  -- Local variables here
  i integer;
str varchar2(200);
begin
  -- Test statements here
str :='select * from BUSI_TD_BOOKS where author =:au or name =:n';
  execute immediate str using '123456','凯瑟琳';
commit;
end;
3 有查询,无参数
注意:
 标准脚本不能直接显示查询结果,允许使用slect语句,要求加 into,查询结果必须是一条记录
excute immediate 'select ....' into 变量名;
要求:
1 字符串里面还要用到单引号的时候,用两个单引号代表一个
2 查询的列可以不止一个,那么变量名也可以不止一个,用逗号隔开
3 列和对应的变量,数据类型要兼容
4 这里,变量必须是预先定义的,在declare部分


4 有查询,有参数
    execute immediate 'select....' into 变量名 using 实参列表;


在Oracle中字符串要使用转义符,连写两个单引号。




字面变量 ---- 替代变量
1,只能用在sqlplus 或者PL/SQL的Command Window 里面
2,只能用在简易脚本里面
3, 执行的时候,遇到&符号,就弹出对话框,要求输入文字内容,输入的内容用来替换掉&这个位置的变量。
4, 替换完了之后,执行SQL的内容。
5, 如果&要做字符串的正常组成部分,必须切割成两个字符串,用||拼接两个字符串





















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值