按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
BLACK LEATHER BRIEFCASE 099。99
BLACK LEATHER BRIEFCASE 099。99
NO 2 PENCILS…20PACK 001。99
NO 2 PENCILS…20PACK 001。99
UNIT
CUSTOMER PRODUCT_NAME
COST
sum 233。91
sum 445。22
分析
这个例子对每个客户的付款情况进行了计算总对所以客户的付款情况进行了汇总
现在你应用明白的基本的列格式命令 数据分组命令和对每一组执行计算的内容了
在 SQL*PLUS 中使用变量
尽管没有进行事实上的程序设计语言中 但是你仍然可以在你的 SQL 语句中定义变
量 在 SQL*PLUS 中你可以使用一些特定的选项 将在这一部分中讲述 来在你的程序中
设定参数来接受用户的输入
置换变量 &
在 SQL 脚本中&表示变量的值 如果变量没有进行预定义 那么用户会收到输入数值
的提示
输入
SQL》 select * from &TBL
1 /
Enter value for tbl: products
用户输入数值〃products。〃
455
…………………………………………………………Page 456……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
输出
old 2: from &TBL
new 2: from products
PRO PRODUCT_NAME UNIT_COST
P01 MICKEY MOUSE LAMP 29。95
P02 NO 2 PENCILS 20 PACK 1。99
P03 COFFEE MUG 6。95
P04 FAR SIDE CALENDAR 10。5
P05 NATURE CALENDAR 12。99
P06 SQL MAND REFERENCE 29。99
P07 BLACK LEATHER BRIEFCASE 99。99
分析
在这个交互式查询中 PRODUCT 替换了原来的&TBL
DEFINE
在 SQL 的脚本中你可以使用 DEFINE 来对一个变量赋值 如果在你的 SQL 脚本中定
义了变量 那么在运行时用户不会像你使用&时那样被提示输入数值 在下一个例子中使
用与上一个例子相同的 SELECT 语句 但是这次 TBL 的值是在脚本中定义的
输入
SQL》 define TBL=products
SQL》 select * from &TBL;
输出
old 2: from &TBL
new 2: from products
PRO PRODUCT_NAME UNIT_COST
P01 MICKEY MOUSE LAMP 29。95
P02 NO 2 PENCILS 20 PACK 1。99
P03 COFFEE MUG 6。95
P04 FAR SIDE CALENDAR 10。5
P05 NATURE CALENDAR 12。99
P06 SQL MAND REFERENCE 29。99
P07 BLACK LEATHER BRIEFCASE 99。99
456
…………………………………………………………Page 457……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
分析
这两个查询的结果是相同的 下边的部分将向您介绍对于脚本参数的另外一种向用户
提示的办法
ACCEPT
ACCEPT 可以在运行时允许用户向变量中输入数值 它所作的工作与没有 DEFINE 的
&相同 但它的可控性更好 它可以给用户一个更好友好的提示
下边的例子将从清除缓冲区开始
输入
SQL》 clear buffer
输出
buffer cleared
然后我们使用 INPUT 命令来向缓冲区中输入 SQL 语句 如果你输入语句时没有从
INPUT 开始 你开始会被提示为 NEWTITLE 输入一个值 当然 你也可以建立一个新文
件并在其中输入你的语句
输入
SQL》 input
1 accept newtitle prompt 'Enter Title for Report: '
2 ttitle center newtitle
3 select *
4 from products
5
SQL》 save prod
输出
File 〃prod。sql〃 already exists。
Use another name or 〃SAVE filename REPLACE〃。
分析
咦 这个文件怎么已经存在了 这就是说你已经有一个叫 PROD。SQL 的文件了 如果
你不想保留它 你可以使用覆盖选项来保存缓冲区中的内容 注意在上一个语句中的
457
…………………………………………………………Page 458……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
PROMPT 它将会向用户显示文本信息以准确地告诉用户应该输入什么
输入
SQL》 save prod replace
输出
Wrote file prod
现在你可以使用 START 命令来运行这个文件了
输入
SQL》 start prod
Enter Title for Report: A LIST OF PRODUCTS
输出
A LIST OF PRODUCTS
PRO PRODUCT_NAME UNIT_COST
P01 MICKEY MOUSE LAMP 29。95
P02 NO 2 PENCILS 20 PACK 1。99
P03 COFFEE MUG 6。95
P04 FAR SIDE CALENDAR 10。5
P05 NATURE CALENDAR 12。99
P06 SQL MAND REFERENCE 29。99
P07 BLACK LEATHER BRIEFCASE 99。99
7 rows selected。
分析
你输入的文字成了当前报表的题头
下边的例子向你显示了你如果替换在语句中的任何变量的值
输入
SQL》 input
1 accept prod_id prompt 'Enter PRODUCT ID to Search for: '
2 select *
3 from products
4 where product_id = '&prod_id'
5
SQL》 save prod1
458
…………………………………………………………Page 459……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
输出
Created file prod1
输入
SQL》 start prod1
Enter PRODUCT ID to Search for: P01
输出
old 3: where product_id = '&prod_id'
new 3: where product_id = 'P01'
A LIST OF PRODUCTS
PRO PRODUCT_NAME UNIT_COST
P01 MICKEY MOUSE LAMP 29。95
分析
你可以在许多的需要中见到变量的使用 例如 为你想要重新定向输出的文件命名或
为 ORDER BY 子句指定一个表达式 其中的方法之一是使用变量替换 一种使用变量替换
的情况是在事务处理诊断报告中在 WHERE 子句中输入日期 如果你的查询设计成要求在
特定的时间内得到信息的话 你也许需要设置一个替换变量来与表中的 SSN 列进行比较
NEW_VALUE
NEW_VALUE 命令可以将 SELECT 语句中的数值返回给一个没有经你明确定义的变
量 语法格式如下
语法
COL'UMN' column_name NEW_VALUE new_name
你可以使用&符号来调用这个值 例如
&new_name
在 NEW_VALUE 命令中必须使用 COLUMN 命令
注意&符号与 COLUMN 在下边的 SQL*PLUS 文件中是一起使用的 在这个文件中出
现了 GET 命令
输入
SQL》 get prod1
459
…………………………………………………………Page 460……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪