快速业务通道

通过批处理调用SQL的方法(osql)

作者 佚名 来源 批处理 浏览 发布时间 2013-07-09


仅当命令终止符 GO(默认)、RESET、ED、!!、EXIT、QUIT 和 CTRL+C 出现在一行的开始(紧跟 osql 提示符)时才可以识别。osql 忽视同一行中这些关键字后输入的任何内容。
GO 表明一批的结束和任何已被高速缓存的 Transact-SQL 语句的执行。在每个输入行的结尾按 ENTER 键时,osql 将高速缓存此行的语句。键入 GO 后按 ENTER 键时,所有当前已缓存的语句都将作为批处理发送到 SQL Server。
当前的 osql 实用工具工作起来就好像在任何被执行的脚本结尾处都带有隐含的 GO,因而脚本中的所有语句都将执行。最后一个 GO 后的任何语句都不执行。
通过键入以命令终止符作为开始的行来结束命令。可以在命令终止符后输入一个整数来指定命令运行的次数。例如,若要执行此命令 100次,请键入:
SELECT x = 1
GO 100
执行结束时打印一次结果。osql 不接受每行字符数超过 1,000 的结果。长语句应当跨多个行书写。
通过在行首键入 ED,用户可以在当前查询缓冲区上调用编辑器。编辑器在 EDITOR 环境变量中定义。默认编辑器为"edit"。可以通过设置 EDITOR 环境变量来指定其它编辑器。例如,若要将默认编辑器指定为 Notepad,请在操作系统提示符处输入:
SET EDITOR=notepad
操作系统命令
通过用两个惊叹号 (!!) 开始一行,然后输入命令的方式,也可以执行操作系统命令。Windows NT 的命令撤回功能可用来撤回和修改 osql 语句。键入 RESET 可以清除现有的查询缓冲区。
在运行存储过程时,osql 在批处理中的每个结果集之间打印一个空行。此外,如果没有应用于已执行的语句,则"0 行受到影响"消息不会出现。
交互性使用 osql
若要交互性使用 osql,请在命令提示符处键入 osql 命令(以及任何选项)。
可以通过键入类似下行的命令,在包含由 osql 执行的查询的文件(例如 Stores.qry)中进行读取:
osql /U alma /P /i stores.qry
该文件必须包含命令终止符。
可以通过键入类似下行的命令,在包含查询的文件(例如 Titles.qry)中进行读取并将结果导向另一文件:
osql /U alma /P /i titles.qry /o titles.res
交互性使用 osql 时,为把操作系统文件读入到命令缓冲区,可使用:r file_name。不要在文件中包含命令终止符;在完成编辑后交互输入终止符。
插入注释
在 osql 提交给 SQL Server 的 Transact-SQL 语句中可以包含注释。允许使用两种注释风格类型:-- 和 /*...*/。
有关更多信息,请参见使用注释。
使用 EXIT 返回 osql 结果
可以使用 SELECT 语句的结果作为 osql 的返回值。第一个结果行的第一列转换为 4 字节的整数(长整型)。MS-DOS 将低字节传递给父进程或操作系统错误级别。Windows NT 则传递整个 4 字节整数。语法为:
EXIT(query)
例如:
EXIT(SELECT @@ROWCOUNT)
EXIT(SELECT 5)
也可以包含 EXIT 参数,使其作为批处理文件的一部分。例如:
osql /Q "EXIT(SELECT COUNT(*) FROM ''%1'')"
osql 实用工具将圆括号 ( ) 中输入的所有内容原样传递给服务器。如果存储系统过程选择了一个集合并返回一个值,则仅返回选择的内容。在圆括号之间无参数的 EXIT( ) 语句执行批处理中此语句前的所有内容,然后退出,而不返回值。
EXIT 格式有四种:
EXIT
不执行批处理就立即退出,无返回值。
EXIT( )
执行批处理后退出,无返回值。
EXIT(query)
执行包括查询的批处理,返回查询的结果后退出。
状态为 127 的 RAISERROR。
如果在 osql 脚本中使用 RAISERROR,并且出现状态 127,则 osql 会退出并将消息 ID 返回给客户程序。例如:
RAISERROR(50001, 10, 127)
该错误会导致 osql 脚本终止并将消息 ID 50001 返回给客户程序。
SQL Server 保留介于 -1 到 -99 之间的返回值;osql 定义下列值:
-100
选择返回值前遇到的错误。
-101
选择返回值时找不

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号