`

动态SQL

SQL 
阅读更多

1.why——有些时候表明和列名在程序运行的时候才被告诉。

 

2.what

 

3.参考变量的绑定方式

    3.1:早起绑定——编译时检查表名和列名,如大部分DDL,

    3.2::晚期绑定——无法检查表名和列名。如动态SQL,truncate命令,

 

3.格式

   3.1:基本式

select *from emp;
declare
       vsql varchar(100);
       vtbl varchar(30);
begin 
      vtbl:='&请输入表名';
      vsql:='delete from'||vtbl;
      execute immediate vsql;--执行动态语句
      dbms_output.put_line(sql);
end;  
 declare
       salary number(6,2);
       sql_stat varchar2(100);
begin
     sql_stat:='update emp set sal=sal*(1+:percent/100)'
     ||'where empno=:eno returning sal into :salary';--这里的:salary不是占位符表示什么意思。
     execute immediate sql_stat using &增幅,&员工号 returning into salary;
     dbms_output.put_line('新工资'||salary);
end;

   3.2:查询式——execute immediate 查询sql into 变量

 

declare 
        vsql varchar(1000);
        v_empno emp.empno%type;
        v_ename emp.ename%type;
begin
     v_empno:='&请输入工号';
     vsql:='select ename from emp where empno='||v_empno;
     execute immediate vsql into v_ename;--执行动态语句
     dbms_output.put_line(v_ename);
end;

   3.3:变量绑定式——execute immediate sql  using 绑定变量

         *每个对PL/SQL变量的引用实际上都是绑定变量。

         *不能用绑定变量替换实际的数据库对象名 

declare 
        vsql varchar(1000);
        v_empno emp.empno%type;
        v_ename emp.ename%type;
begin
     v_empno:='&请输入工号';
     vsql:='select ename from emp where empno=:xx';
     execute immediate vsql into v_ename using v_empno;--执行动态语句
     dbms_output.put_line(v_ename);
end;

    3.4:海量式——ref corsor+open for

declare 
        type rc_type is ref cursor;
        my_rec rc_type;
        my_str varchar(30);
        v_field varchar(30);
begin
     v_field:='&字段';
     open my_rec for 'select'||v_field||'from'||&表名;
     fetch my_rec into my_str;
     while(my_rec%found)
     loop
         dbms_output.put_line(my_str);
         fetch my_rec into my_str;
     end loop;
     close my_rec;
end;

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    hibernate实现动态SQL查询

    本篇文章主要探讨如何利用Hibernate实现动态SQL查询,结合XML配置和FREEMARKER模板引擎来生成执行的SQL语句。 一、Hibernate简介 Hibernate作为一款强大的持久层框架,它简化了Java应用程序与数据库之间的交互。...

    kettel循环执行动态sql

    标题中的“Kettle循环执行动态SQL”指的是使用Pentaho Data Integration(Kettle)工具来设计数据集成工作流,其中包含动态生成并执行SQL语句的步骤。在数据处理和ETL(Extract, Transform, Load)过程中,动态SQL是...

    静态、动态sql及各种游标

    静态、动态SQL及各种游标 静态SQL和动态SQL是两种不同的SQL语句执行方式,分别应用于不同的场景中。静态SQL是指在PL/SQL中直接运行的SQL语句,没有什么特别之处。动态SQL则是指利用EXECUTE IMMEDIATE语句执行的SQL...

    Gbase8s动态sql的介绍

    Gbase8s 动态 SQL 介绍 Gbase8s 动态 SQL 介绍 在 Gbase8s 中,动态 SQL 是一种特殊的 SQL 语句形式,它可以在执行时动态改变 SQL 语句的内容,不需要预先知道每个 SQL 语句的确切内容。与静态 SQL 不同,静态 SQL...

    动态SQL 并且把返回的值赋给变量

    ### 动态SQL 并且把返回的值赋给变量 在SQL Server中,动态SQL是一种强大而灵活的工具,允许开发人员根据运行时条件构建并执行SQL查询。本文将详细介绍如何利用`sp_executesql`来执行动态SQL,并重点讨论如何将执行...

    mybatis 动态sql及参数传递

    在实际开发过程中,我们往往需要编写复杂的SQL语句,拼接稍有不注意就会导致错误,Mybatis给开发者提供了动态SQL,大大降低了拼接SQL导致的错误。 动态标签 if标签 if标签通常用那个胡where语句,update语句,insert...

    SQLServer动态SQL语句的用法

    SQL Server 动态 SQL 语句的用法 SQL Server 中的动态 SQL 语句是一种灵活的查询方式,它可以根据不同的情况生成不同的 SQL 语句。动态 SQL 语句可以用来实现复杂的业务逻辑,提高查询效率和灵活性。 普通 SQL ...

    mybatis之动态SQL

    动态 SQL 是 MyBatis 的一大特色,它允许我们在运行时根据条件构建 SQL 语句,极大地提高了代码的可维护性和灵活性。 动态 SQL 在 MyBatis 中主要通过 XML 映射文件或者注解来实现。在 XML 映射文件中,我们可以...

    DB2游标及动态SQL

    ### DB2游标及动态SQL详解 #### 一、DB2游标概念与使用 **1.1 游标简介** 在DB2中,游标是一种用于遍历查询结果集的强大工具。它允许用户一行一行地处理数据,这对于需要逐行处理数据的应用场景非常有用。游标通常...

    ibatis动态SQL标签用法

    iBatis动态SQL标签用法 iBatis是Java持久层框架,提供了动态SQL标签来实现动态查询。动态SQL标签可以根据不同的条件生成不同的SQL语句,从而提高查询效率和灵活性。 动态SQL片段 iBatis提供了动态SQL片段的功能,...

    动态SQL与绑定变量

    动态SQL与绑定变量是数据库编程中的重要概念,尤其在Oracle数据库中被广泛应用。动态SQL允许在运行时构建和执行SQL语句,而绑定变量则是在动态SQL中用于替代具体值的占位符,使得SQL语句更为灵活和高效。 ### 1. ...

    一款IDEA插件,可以实现生成Mysql的动态SQL,适合新手使用mybatis来写项目,加快项目落地周期.zip

    mybatis动态sql 1.什么是动态SQL? Mabits是一个Java持久化框架,它提供了动态SQL的功能。动态SQL是一种根据不同条件动态生成SQL语句的技术。在Mabits中,动态SQL通常是通过使用一组特殊的标签和代码块来实现的,...

    sql语句、动态SQL语句基本语法

    SQL(Structured Query Language)是用于管理和操作...综上所述,掌握SQL语句和动态SQL的基本语法对于任何IT从业者来说都至关重要,无论是数据库管理员还是开发者,都需要熟练运用这些技能来高效地操作和管理数据库。

    学习SQL应知道的动态SQL语句基本语法 mssql

    在SQL世界中,动态SQL(Dynamic SQL)是一种强大的技术,特别是在复杂的数据库操作和程序设计中。在Microsoft SQL Server(MSSQL)环境下,掌握动态SQL的基本语法是提升SQL编程能力的关键。下面,我们将深入探讨动态...

    《kettle中实现动态SQL查询》博客文章示例代码

    本文将深入探讨如何在Kettle中实现动态SQL查询,这对于处理复杂的数据库操作和数据迁移至关重要。我们将讨论问号占位符和命名参数这两种方法,并分析它们的区别。 首先,让我们理解什么是动态SQL查询。在传统的SQL...

    本地动态SQL的开发

    ### 本地动态SQL的开发 #### 一、动态SQL的概念 动态SQL是在程序运行时构建并执行的SQL语句,其内容无法在编译时完全确定。与静态SQL(如常见的`UPDATE`语句)不同,动态SQL允许开发者在运行时根据实际情况构建...

    SpringBoot+JPA+Freemarker 生成动态SQL

    本篇将详细讲解如何利用这些技术来生成动态SQL。 首先,SpringBoot是Spring框架的一个轻量级版本,它简化了配置,提供了一种快速开发全新Spring应用的方式。SpringBoot集成了大量的常用库,如数据访问、安全、缓存...

    Oracle中动态SQL详解

    ### Oracle中动态SQL详解 #### 一、动态SQL概述与特点 在Oracle数据库中,动态SQL是一种非常重要的技术,尤其对于开发人员来说更是必不可少的一部分。动态SQL是指在运行时构建并执行的SQL语句,与静态SQL(在编译...

    hibernate增删改查和动态sql

    “hibernate增删改查和动态sql”这个标题涵盖了两个主要的Hibernate使用场景。首先,"增删改查"(CRUD操作)是任何数据库操作的基础,包括创建(Create)、读取(Read)、更新(Update)和删除(Delete)。在...

Global site tag (gtag.js) - Google Analytics