知识大全 利用替换变量提高Oracle数据库系统的交互性

Posted 变量

篇首语:勿以恶小而为之,勿以善小而不为。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 利用替换变量提高Oracle数据库系统的交互性相关的知识,希望对你有一定的参考价值。

利用替换变量提高Oracle数据库系统的交互性  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  数据库管理员在写SQL命令的时候 总希望SQL语句能够满足不同环境的需要 为此 可以通过交互式命令来提高SQL语句的灵活性 当在一个SQL语句中 加入了交互式变量之后 在语句运行之时 数据库就会提醒用户输入相关的变量 如下图

  

  不过在实际工作中 往往把这个SQL语句保存为脚本 如此的话 可以进一步提高脚本文件的可重用性 有时会 在数据库管理的时候 结合替换变量 写一些有用的脚本文件 可以起到画龙点睛的作用 笔者在平时数据库开发与管理中 就喜欢采用这种方式来简化工作 在这篇文章中 笔者就结合自己的工作经验 给大家谈谈如何在Oracle数据库中利用可替换变量来提高SQL语句的灵活性 以及在使用替换变量时的一些注意点

  一 定义与使用替换变量

  在Oracle提供的相关工具中 如SQL PLUS管理平台中 允许数据库管理员采用替换变量来提高SQL语句的灵活性 替换变量的定义跟普通变量的定义类似 只需要在变量名前面加入&符号即可 如上面例子中的 &name_filed 就表示一个替换变量 当运行一段有替换变量的SQL语句时 数据库系统会自动提醒用户要输入哪些变量值

  如在如下这条语句中 &name_filed表示用户想要显示的字段值 若用户想要显示某个表中的多个字段的话 则可以在这里定义多个替换变量 而条件语句中的 &NAME 则表示一个限制条件 或者说一个查询参数 这条语句的大意就是用户输入员工的名字 然后让系统查询出用户想了解的信息 如用户的身份证号码等等

  SQL> select &name_filed from dtmfg ad_user t where t name like &NAME ;

  细心的读者或许会发现 在查询条件中的替换变量 为什么要用单引号括起来呢?这是因为 我们在写SQL语句的时候 若字段时字符型的话 就需要用单引号括起来 所以 在定义替换变量的时候 跟平时写SQL语句类型 若数据类型是字符或者日期型的 则需要在定义替换变量的时候 用单引行括起来 否则的话 在用户执行这条语句 输入变量的时候 每次都需要把括号添加进去 那就非常的麻烦 相比起来 还不如在定义这条SQL语句的时候 就加入单引号 如此 在输入对应值的时候 就不用用单引号括起来了 可以直接输入

  另外 替换变量不但在Select语句中可以使用 在Update等语句中也可以普遍应用

  二 定义默认值

  有时候 对于替换变量我们可能会有默认值 如果数据库管理员已经知道替换变量的具体值 又想避免运行脚本文件时反复出现 则可以给替换变量定义一个默认值 在SQL Plus平台中 数据库管理员可以利用Define命令来定义替换变量的默认值

  在定义替换变量默认值的时候 需要注意几个问题

  一是要合理使用单引号 该用单引号括起来的 就要使用单引号;不需要用的时候 坚决不用 否则的话 会造成SQL语句的运行错误 那么什么时候该用单引号呢?这主要是根据SQL语句来的 平时在写SQL语句的过程中要用到单引号的 则在定义默认值的时候 也要用单引号括起来 如果平时不用的话 则就可以不用 如在定义字段名称的默认值时 就不需要用单引号括起来 画蛇添足 反而会导致SQL语句的执行错误

  二是这只是定义了一个默认值 当定义来一个默认值之后 系统就不会提示用户输入相关的参数 而直接采用默认值 如在上面这个例子中 若利用define NAME= SuperUser 这条语句定义了NAME的默认值之后 在执行这条Select语句的时候 就不会再提示用户输入NAME值 我们可以利用Define命令来查看当前环境中所有的可替换变量的值 也可以利用Define NAME来查看可替换变量NAME的默认值

  三是若用户采用的是脚本文件的话 则可以直接把这个定义默认值的语句放在脚本文件的一开始 如此的话 这个默认值的定义就会随着脚本文件而走 用户不用每次使用脚本文件的时候 都先去定义默认值 这个这个默认值的作用域只是适用于当前的会话 当数据库管理员结束当前的会话后 这个变量的默认值也就失效了 为了在下次重新会话的时候 仍然可以利用这个默认值 故在脚本文件一开始定义可替换变量的默认值 也是非常有必要的

  四是利用Define命令来定义可替换变量的时候 有一个限制条件 即可替换变量必须是字符型的数据 若用户想定义的可替换变量是数字型的 如员工的薪水 此时 就需要采用ACCEPT命令 否则的话 就是一个无效的默认值

  若我们有时候不需要这个默认值 需要取消他 改如何处理呢?此时 我们就可以利用undefine命令 来取消某个替换变量的默认值 当然 我们也可以利用Define命令来给某个替换变量设置一个新的值 在实际工作中 可能还是直接采用Define命令来为其设置一个默认值来的方便

  三 测试完毕后 保存为脚本文件

  为了增强这个SQL语句的可重用性 我们往往会把写好的SQL语句保存为脚本文件 如此的话 下次需要用到的时候 直接执行这个脚本语句即可 在保存的时候 为了有更好的可读性 笔者有一些小小的建议

  一是最好在脚本文件的开头 注释一些这条语句的具体用途 俗话说 好记性不如烂笔头 在几个月后 很难确保你还记得这条语句的用途

  二是给可替换变量取一些比较直观的名字 否则的话 当使用数据库管理员可能直接都不知道某个替换变量所代表的含义 另外 列的替换变量跟查询语句中的替换变量最好进行区分 如可以利用前缀进行区别 如此做的话 这个语句的可阅读性就会增强

  三是可利用Prompt命令来输出一些提示信息 在编写替换变量的时候 要像编写其他程序一样 养成为每个可替换变量做好注释的习惯 这时作为数据库管理员一个必备的技能之一

  四 其他解决方案

  针对Oracle数据库SQL语句的交互性而言 它还提供了一些其他的解决方案

  如利用ACCEPT PAUSE PROMPT三个命令结合使用提供一个模拟的用户输入界面 ACCEPT命令可以让数据库管理员指定替换变量的类型 因为Define定义替换变量默认值的时候 只能够接受字符型数据的默认值 若是其他数据类型的默认值的话 就要用ACCEPT来定义 而PAUSE顾名思义 可以让脚本语句暂时运行 以提供一个更加友好的用户界面 如可以让用户通过输入回车键来执行剩下的脚本语句等等 如此 就给用户一个 喘息 核对数据的机会

  如可以通过绑定变量的方式 来实现替换变量的功能 绑定变量只在当前会话中存在 同名的绑定变量一最后一个定义为准 绑定变量在赋值的时候 比较麻烦 需要采用Excute命令来给绑定变量进行赋值 所以 在实际应用中 不是很广泛

cha138/Article/program/Oracle/201311/17006

相关参考

知识大全 PHP与javascript实现变量交互的示例代码

PHP与javascript实现变量交互的示例代码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!以

知识大全 aspx页面作为模板引擎的一种实现

  什么是模板引擎?说白了就是能够自动替换占位符的替换引擎原理上也就是两个步骤找到》替换但是替换不是简单的替换包括  简单变量替换();复杂变量替换();对象变量替换();键值类型替换();自定义集合

知识大全 数据库中利用角色增强应用系统安全

  数据安全性是指保护数据以防止非法的使用避免造成数据有意或无意的丢失泄露或破坏由于数据库系统中集中存放有大量的数据这些数据又为众多用户所共享所以安全约束是一个极为突出的问题  Oracle数据库系统

知识大全 oracle数据库下统计专营店的男女数量的语句

Web_THBC为表示层也就是页面(aspx)BLL_THBC为业务逻辑层DAL_THBC为数据库交互层(向数据库执行SQL语句)Model_THBC为实体类DbHelper为数据库连接类统计个专营店

知识大全 如何有效的利用ORACLE数据字典

如何有效的利用ORACLE数据字典  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!ORACLE的数据

知识大全 利用iptables防火墙保护Oracle数据库

利用iptables防火墙保护Oracle数据库  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 Oracle数据库中利用ASSM改善分段存储

Oracle数据库中利用ASSM改善分段存储  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  为了

知识大全 Oracle9i 数据库管理实务讲座(六)-利用 DBCA 建立 Oracle9i 数据库(1)

Oracle9i数据库管理实务讲座(六)-利用DBCA建立Oracle9i数据库(1)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布

知识大全 利用SQL*Loader将 Excel 数据导出到 Oracle 数据库中

利用SQL*Loader将Excel数据导出到Oracle数据库中  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一

知识大全 oracle--SQL 变量

oracle--SQL变量  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  TransactSQL