丁东良鄢陵县自动化节水灌溉系统

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第七章用iSQL*Plus生成易读的输出Copyright©OracleCorporation,2001.Allrightsreserved.用iSQL*Plus生成易读的输出进度表:时间主题35minutes讲演35minutes练习70minutes总共中国科学院西安网络中心©2005OracleSQL入门7-1第七章用iSQL*Plus生成易读的输出7-2Copyright©OracleCorporation,2001.Allrightsreserved.目标完成本课后,您应当能够执行下列操作:•生成有替换变量的查询•定制iSQL*Plus环境•生成更易读的输出•创建和执行脚本文件课程目标在本课中,你将学习怎样包含iSQL*Plus命令来产生更易阅读的SQL输出。你能够创建包含WHERE子句的命令文件来限制所显示的行。为了改变条件,你可以在每次命令文件运行时使用替换变量。替换变量可以代替WHERE子句中的值,文本串,甚至一个列或一个表名。中国科学院西安网络中心©2005OracleSQL入门7-2第七章用iSQL*Plus生成易读的输出7-3Copyright©OracleCorporation,2001.Allrightsreserved.替换变量我想查询不同的值。...salary=?……department_id=?…...last_name=?...用户替换变量在此以前的例子都是硬编码的,在已完成的应用程序中,用户将触发报表,并且报表将无进一步提示地运行。数据范围将被在iSQL*Plus脚本文件中的固定的WHERE子句预先确定。用iSQL*Plus,你可以创建有提示的报表,使用替换变量提示用户提供他们自己的值来限制返回数据的范围。你可以在命令文件或在单个的SQL语句中嵌入替换变量。一个变量可以被认为是一个容器,在其中值被临时存储,当语句运行时,值被替换。教师注释演示:7_varno.sql,7_varyes.sql目的:举例说明用一个带替换变量的大小写敏感的查询返回所有的行。在iSQL*Plus9.0.1.0.1中,当使用&替换和通配符(%)于字符值时,有一处BUG。该BUG已经被报告。7_varyes.sql在iSQL*Plus中将产生一个错误,但对于学生使用其他产品(例如:Forms、Reports)的后续课程,概念是重要的。你可以在SQL*Plus中示范7_varyes.sql。中国科学院西安网络中心©2005OracleSQL入门7-3第七章用iSQL*Plus生成易读的输出7-4Copyright©OracleCorporation,2001.Allrightsreserved.替换变量iSQL*Plus替换变量用于:•临时存储变量–单&符号–双&符号–DEFINE命令•在SQL语句之间传递变量•动态改变页眉和页脚替换变量在iSQL*Plus中,你可以使用单个的&替换变量临时存储值。你可以用DEFINE命令在iSQL*Plus中预先确定变量。DEFINE创建并指定一个只到变量。限制数据范围的例子报告只获得当前的范围或指定的日期范围报告涉及的数据只与用户请求的报告有关只显示给定部门中的人员其他的交互式作用交互作用不限制用户直接与WHERE子句的交互。同样的规则可以用于完成其他目的。例如:动态改变页眉和页脚从文件而不是从人那里获得输入值从一个SQL语句到另一个SQL语句传递值iSQL*Plus不支持用户输入的确认检查。教师注释替换变量可以用在SQL和iSQL*Plus命令的任何地方,除了在命令提示符后作为第一个单词。中国科学院西安网络中心©2005OracleSQL入门7-4第七章用iSQL*Plus生成易读的输出7-5Copyright©OracleCorporation,2001.Allrightsreserved.使用&替换变量用一个带有前缀&的变量提示用户输入一个值SELECTemployee_id,last_name,salary,department_idFROMemployeesWHEREemployee_id=&employee_num;单&替换变量在运行一个报告时,用户通常需要动态地限定返回的数据。iSQL*Plus的用户变量提供了这种灵活性,在SQL语句中使用一个&符号来表示变量,变量不需要给每个变量定义值。符号说明&user_variable代表一个SQL语句中的变量,如果变量不存在,iSQL*Plus提示用户输入一个值。在幻灯片的例子中,为每个雇员号创建了一个iSQL*Plus单&替换变量。在执行语句时,iSQL*Plus提示用户输入一个雇员号,然后显示该雇员的雇员号、名字、薪水和部门号。使用单&时,如果变量不存在,每次执行命令时都会给用户提示。中国科学院西安网络中心©2005OracleSQL入门7-5第七章用iSQL*Plus生成易读的输出7-6Copyright©OracleCorporation,2001.Allrightsreserved.使用&替换变量12101单&替换变量当iSQL*Plus发现SQL语句中包含一个&时,提示用户为SQL语句中的命名替换变量输入一个值。一旦用户输入一个值,并且单击执行按钮,结果会显示在当前iSQL*Plus会话的输出区域中。中国科学院西安网络中心©2005OracleSQL入门7-6第七章用iSQL*Plus生成易读的输出7-7Copyright©OracleCorporation,2001.Allrightsreserved.SELECTlast_name,department_id,salary*12FROMemployeesWHEREjob_id='&job_title';替换变量的字符和数字值日期和字符值放在单引号之间用替换变量指定字符和日期值在WHERE子句中,数据和字符值必须放在单引号中,该规则也适用于替换变量。幻灯片显示了一个查询,根据iSQL*Plus替换变量的职别值,返回指定的雇员的名字、部门号和年薪。注:也可以在诸如UPPER和LOWER这样的函数中使用&符号。例如UPPER(‘&job_title’)可以将输入的职别转换为大写。中国科学院西安网络中心©2005OracleSQL入门7-7第七章用iSQL*Plus生成易读的输出7-8Copyright©OracleCorporation,2001.Allrightsreserved.指定列名、表达式和文本用替换变量可以提供:•WHERE条件•ORDERBY子句•列表达式•表名•输入SELECT语句指定列名、表达式和文本替换变量不仅可以用在SQL语句的WHERE子句中,替换变量也可以用来替换字段名、表达式或文本。例显示雇员号和任何其他列和任何雇员条件。SELECTemployee_id,&column_nameFROMemployeesWHERE&condition;如果用户没有输入替换变量的值,在执行前面的语句时将会出现错误。注:除了在命令提示处作为输入的第一个单词,替换变量可以用于SELECT语句中的位置。中国科学院西安网络中心©2005OracleSQL入门7-8第七章用iSQL*Plus生成易读的输出7-9Copyright©OracleCorporation,2001.Allrightsreserved.SELECTemployee_id,last_name,job_id,&column_nameFROMemployeesWHERE&conditionORDERBY&order_column;指定列名、表达式和文本指定列名、表达式和文本(续)幻灯片中的例子从EMPLOYEES表中显示了雇员号、名字、职别和在运行时由用户指定的任何其他列。用户也可以为返回行和列名指定条件,以及指定用于排序的列名。中国科学院西安网络中心©2005OracleSQL入门7-9第七章用iSQL*Plus生成易读的输出7-10Copyright©OracleCorporation,2001.Allrightsreserved.定义替换变量•可以用iSQL*PlusDEFINE命令预先定义变量DEFINEvariable=value创建一个CHAR数据类型的用户变量•如果需要预先定义一个带空格的变量,在使用DEFINE命令时,必须将变量放在单引号中•一个已定义的变量在本会话期间有效定义替换变量在执行SELECT语句之前你可以预先确定用户变量。iSQL*Plus提供的DEFINE命令用于定义和设置替换变量。命令说明DEFINEvariable=value用CHAR数据类型创建一个用户变量,并为它指定一个值。DEFINEvariable显示变量、它的值和数据类型。DEFINE显示所有用户变量的值和数据类型。中国科学院西安网络中心©2005OracleSQL入门7-10第七章用iSQL*Plus生成易读的输出7-11Copyright©OracleCorporation,2001.Allrightsreserved.DEFINE和UNDEFINE命令•一个变量保持其定义,直到:–使用UNDEFINE命令清除它–退出iSQL*Plus•可以用DEFINE命令检验所做的改变DEFINEjob_title=IT_PROG(定义变量)DEFINEjob_title(检验变量)DEFINEJOB_TITLE=“IT_PROG”(CHAR)(检验结果)UNDEFINEjob_title(清除变量)DEFINEjob_title(检验变量)SP2-0135:symboljob_titleisUNDEFINED(检验结果)定义和清除命令被定义的变量一直有效,除非你:对一个变量发布UNDEFINE命令退出iSQL*Plus当你清除变量时,可以用DEFINE命令验证你的改变。当你退出iSQL*Plus时,被定义的在此会话期间的变量被丢失。中国科学院西安网络中心©2005OracleSQL入门7-11第七章用iSQL*Plus生成易读的输出7-12Copyright©OracleCorporation,2001.Allrightsreserved.SELECTemployee_id,last_name,salary,department_idFROMemployeesWHEREemployee_id=&employee_num;使用带&替换变量的DEFINE命令•使用DEFINE命令创建替换变量•在SQL语句中用一个带&前缀的变量来替换DEFINEemployee_num=200使用DEFINE命令幻灯片中的例子由DEFINE命令创建了一个iSQL*Plus的用于雇员号的替换变量,在运行时显示由替换变量指定的雇员号、名字、薪水和部门号。因为变量是用iSQL*PlusDEFINE命令创建的,用户不会被提示为雇员号输入一个值,在SELECT语句中已定义的变量值被自动替换。EMPLOYEE_NUM替换变量在会话期间都是存在的,直到用户取消它的定义,或者退出iSQL*Plus会话。中国科学院西安网络中心©2005OracleSQL入门7-12第七章用iSQL*Plus生成易读的输出7-13Copyright©OracleCorporation,2001.Allrightsreserved.SELECTemployee_id,last_name,job_id,&&column_nameFROMemployeesORDERBY&column_name;如果你想要重复使用变量的值而不需要每次提示用户输入,可以使用&&。下面&column_name需要输入,而&&column_name不需要输入…使用&&替换变量双&&替换变量如果你想要多次使用变量值而不想每次都提示,你可以用双&&替换变量。对于每个变量,用户只能看到一次要求输入值的提示。在幻灯片的例子中,用户被要求只给予变量column_name一次值。由用户提供的值(department_id)既被用于显示数据,也被用于排序数据。iSQL*Plus存储用DEFI

1 / 44
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功