首页 > 数据库 >7.PL/SQL动态执行DDL语句

7.PL/SQL动态执行DDL语句

时间:2022-12-15 17:24:20浏览次数:49  
标签:语句 yj SQL ls DDL stuid PL stuinfo

1.语法

EXECUTE IMMEDIATE 动态SQL语句
[ into 变量列表 ]
[ using 参数列表]

语法解析:如果动态SQL语句是 SELECT 语句,可以把查询的结果保存到 INTO 后面的变量中。如果动态语句中存在参数, USING 为SQL语句中的参数传值。动态 SQL 中的参数格式是: [:参数名],参数在运行时需要使用 USING 传值。下面我们通过案例代码分析动态SQL语句的写法。

案例1:利用动态语句创建学生信息表的备份表

declare
sql_yj varchar(500);--动态SQL执行的语句
begin
sql_yj:='create table STUINFO_201812
            (
              stuid      VARCHAR2(11) ,
              stuname    VARCHAR2(50) ,
              sex        CHAR(1) ,
              age        NUMBER(2) ,
              classno    VARCHAR2(7) ,
              stuaddress VARCHAR2(100),
              grade      CHAR(4) ,
              enroldate  DATE,
              idnumber   VARCHAR2(18) 
            )' ;
 --利用动态语句创建学生备份表(stuinfo_201812)
 execute immediate sql_yj;
end;

案例2:给备份表插入一个学生信息

declare
sql_yj varchar(500);--动态SQL执行的语句
ls_stuid VARCHAR2(11);
ls_stuname VARCHAR2(50);
ls_sex CHAR(1);
ls_age NUMBER(2);
begin
 --查询出学生信息表中学生"张三丰"的基本信息
 select t.stuid,t.stuname,t.sex,t.age 
 into ls_stuid,ls_stuname,ls_sex,ls_age 
 from stuinfo t where t.stuid='SC201801006';

 --利用动态语句执行插入操作,插入“张三丰”的信息
 sql_yj:='insert into stuinfo_201812 values(:1,:2,:3,:4,null,null,null,null,null)';
  execute immediate sql_yj using ls_stuid,ls_stuname,ls_sex,ls_age;
end;

案例4:利用动态SQL语句查询出刚刚插入的学生信息

declare
sql_yj varchar(500);--动态SQL执行的语句
ls_stuinfo stuinfo%rowtype;
ls_stuid VARCHAR2(11);
ls_stuname VARCHAR2(50);
ls_sex CHAR(1);
ls_age NUMBER(2);
begin
 --查询出学生信息表中学生"张三丰"的基本信息
 select t.stuid,t.stuname,t.sex,t.age 
 into ls_stuid,ls_stuname,ls_sex,ls_age 
 from stuinfo t 
 where t.stuid='SC201801006';
 
  --利用动态语句查询获取"张三丰"的信息
 sql_yj:='select * from stuinfo_201812 where stuid=:1';
  execute immediate sql_yj into ls_stuinfo using ls_stuid;
  dbms_output.put_line('学号:'||ls_stuinfo.stuid||'姓名:'
  ||ls_stuinfo.stuname||'性别:'||ls_stuinfo.sex||'年龄:'||ls_stuinfo.age);
end;

标签:语句,yj,SQL,ls,DDL,stuid,PL,stuinfo
From: https://www.cnblogs.com/mxx520/p/16985586.html

相关文章

  • 8.PL/SQL异常处理
    语法结构declare--声明部分begin--执行部分exception--异常部分whenexception1then--异常1处理程序[whenexception2then--异常2处理程序][whenother......
  • 盘点现在用的SqlServer 5种分页方式和拉姆达表达式分页,进来看看吧。
    现在基本上大家都在使用各种轮子自带的分页,大家是否还记得sql分页怎么写?今天我们就来盘一盘怎么写和用哪种方式写。欢迎大家评论区讨论。1、ROW_NUMBER()OVER()方式(SQL......
  • k8s创建MySQL
    Kubernetes创建MysQL整体流程:创建数据存储PV、PVC;创建MySQL数据库、创建访问入口Service;导入测试数据库test-db创建数据存储PV、PVC这里我们使用nfs作为storageclass......
  • 嵌入式数据库 sqllite & h2  utils
    使用场景:简单脚本,但是有需要数据记录.(使用前升级下版本)     我的使用:老机器,老项目,jkd6, 需要记录 SqlLiteUtilspackagecom.icil.edi.listener......
  • ORM执行SQL 双下划线查询 ORM外键字段创建 外键字段相关操作 ORM跨表查询 跨表查询进
    目录ORM执行SQL语句方式1:使用pymysql模块方式2:使用raw方法方式3:djangoconnection双下划线查询__gt(>)__lt(<)queryset对象特性__gte(≥)__lte(≤)__in__range__cont......
  • SQL的使用总结
    select*fromempselect*fromdeptselect*fromjobselect*fromsalarygrade--1.查询所有员工信息。查询员工编号,员工姓名,工资,职务名称,职务描述SELECT t1......
  • JavaconfigApplicationTests
    packagecom.example.demo;importcom.example.demo.config.JavaConfig;importcom.example.demo.model.Printer;importorg.junit.Test;importorg.junit.runner.Ru......
  • vite plugin
    //自定义插件./plugins/fullImportPluginimport*aspathfrom'path'importtype{Plugin,ResolvedConfig}from'vite'exportdefaultfunctionfullImportPl......
  • MySQL数据管理
    MySQL数据管理1.外键(了解)在创建表的时候,增加约束CREATETABLE`grade`( `gradeid`INT(10)NOTNULLAUTO_INCREMENTCOMMENT'年级id', `gradename`VARCHAR(50)N......
  • SQL优化篇之-如何减少耗时查询的调用次数
    背景在查询语句中,如果Select子句中,调用较为耗时的函数或子查询,比较各种SQL语句的编写方案,得出其中最优选择。一、数据准备,SQL语句模拟较耗时的用户函数或子查询......