《SQL 21日自学通(V3.0)(PDF格式)》第116章


时候不输出列标头 
SET HEADING ' ON | OFF ' 
SPOOL FILENAME/OFF 
SPOOL 可以将你的查询结果直接地输入到一个文件中 要想打开 SPOOL 文件 你需 
要输入 
spool filename 
如果想关掉 SPOOL 文件 你应该输入 
spool off 
355 
…………………………………………………………Page 356……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪 
START FILENAME 
大多数的我们所学习的 SQL 命令都是在 SQL》下运行的 另外的一种运行 SQL 语句的 
方法是创建 SQL 执行文件 在 SQL*PLUS 中 运行 SQL 文件的命令是 START FILENAME 
START FILENAME 
ED FILENAME 
ED 是 ORACLE 7 的用以打开文件 文件是已经存在的 的命令 当你使用 ED 打开 
一个文件以后 你就进入了一个全屏幕的编辑环境 它的使用要比在 SQL 提示符下输入 SQL 
语句更容易 你可以使用它来修改你的 SPOOL 文件 你将会发现当你在创建 SQL 脚本的 
时候你会非常频繁地使用它 因为你出于定制的目的你不得不经常地修改脚本的内容 但 
是 你的大多数定制工作是用 SQL*PLUS 来完成的 
ED FILENAME 
计算所有的表中的行数 
在第一个例子中我们会向你演示如何去除你的 SPOOL 文件中的不正确的行 这样你 
的 SQL 脚本在运行的时候就不会返回错误了 
注 请注意在本例中我们所使用的编辑技术 因为我们在之后的例子中将不再进行这一步 
工作的演示 我们假定到目前为止你已经掌握了基本的 SQL 语法 此外 你也可以使 
用不同的编辑方法来编辑你的 SPOOL 文件 
现在回想一下对一个表中的所有行进行计数的函数 COUNT * 你应该已经知道了如何 
对一个表中的所有行进行计数 例如 
INPUT 
SELECT COUNT(*) FROM TBL1 
OUTPUT 
COUNT(*) 
29 
实现的方法很容易 可是如果你想对你的工程中所有属于你的表的行数进行计数时呢 
例如 属于你的表如下表所列 
356 
…………………………………………………………Page 357……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪 
INPUT/OUTPUT 
SELECT * FROM CAT; 
TABLE_NAME TABLE_TYPE 
ACCT_PAY TABLE 
ACCT_REC TABLE 
CUSTOMERS TABLE 
EMPLOYEES TABLE 
HISTORY TABLE 
INVOICES TABLE 
ORDERS TABLE 
PRODUCTS TABLE 
PROJECTS TABLE 
VENDORS TABLE 
10 rows selected。 
分析 
如果你想知道你的表有几行 你可能会对每一个表使用 COUNT * 函数 FEEDBACK 
的结果如下 
10 rows selected 
下边的 SELECT 语句将会生成更多的 SELECT 语句来得到上表中的每一个表的行数 
INPUT/OUTPUT 
SQL》 SET ECHO OFF 
SQL》 SET FEEDBACK OFF 
SQL》 SET HEADING OFF 
SQL》 SPOOL CNT。SQL 
SQL》 SELECT "SELECT COUNT(*) FROM " || TABLE_NAME || ";" 
2 FROM CAT 
3 / 
SELECT COUNT(*) FROM ACCT_PAY; 
SELECT COUNT(*) FROM ACCT_REC; 
SELECT COUNT(*) FROM CUSTOMERS; 
SELECT COUNT(*) FROM EMPLOYEES; 
SELECT COUNT(*) FROM HISTORY; 
SELECT COUNT(*) FROM INVOICES; 
357 
…………………………………………………………Page 358……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪 
SELECT COUNT(*) FROM ORDERS; 
SELECT COUNT(*) FROM PRODUCTS; 
SELECT COUNT(*) FROM PROJECTS; 
select count(*) FROM VENDORS; 
分析 
在上例中的第一个动作使用了 SQL*PLUS 中的命令 设置 echo off feedback off 和 
heading off 是将实际的输出结果加以简化 然后使用 SPOOL 命令来把输出的结果重定位到 
一个叫 CNT。SQL 的文件中 最后的工作是执行这个 SELECT 语句 它将会生成其它形式 
的 SQL 语句 注意在需要生成的 SELECT 语句上要使用单引号 成对的单引号和联接符 
可以让你把实际的数据和字符串结合在一起成为一个新的 SQL 语句 本例中从数据字典中 
选择了数据 命令 SPOOL OFF 则关闭了输出文件 
技巧 在你创建了文件并把你的文件提交运行之前一定把编辑它以使它的语法更加符合你 
的要求 
INPUT 
SQL》 SPOOL OFF 
SQL》 ED CNT。SQL 
OUTPUT 
SQL》 SELECT "SELECT COUNT(*) FROM "||TABLE_NAME||";" FROM CAT; 
SELECT COUNT(*) FROM ACCT_PAY; 
SELECT COUNT(*) FROM ACCT_REC; 
SELECT COUNT(*) FROM CUSTOMERS; 
SELECT COUNT(*) FROM EMPLOYEES; 
SELECT COUNT(*) FROM HISTORY; 
SELECT COUNT(*) FROM INVOICES; 
SELECT COUNT(*) FROM ORDERS; 
SELECT COUNT(*) FROM PRODUCTS; 
SELECT COUNT(*) FROM PROJECTS; 
SELECT COUNT(*) FROM VENDORS; 
SQL》 SPOOL OFF 
分析 
358 
…………………………………………………………Page 359……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪 
SPOOL OFF 命令关闭了输出的文件 然后我们使用 ED 来编辑这个文件 这时你就会 
进行你所创建的文件的内部了 你应该从这个文件中去掉不必要的行 例如已经知道了结 
果的 SELECT 语句以及在文件末尾的 SPOOL OFF 命令 
你的文件在编辑完之后应该如下所示 注意 其中的每一行都是一个完整的 SQL 语句 
SELECT COUNT(*) FROM ACCT_PAY; 
SELECT COUNT(*) FROM ACCT_REC; 
SELECT COUNT(*) FROM CUSTOMERS; 
小说推荐
返回首页返回目录