Oracle和SQLServer的语法区别(6)
Transact-SQL FETCH 语句不需要 INTO 子句。如果没有指定返回变量,该行就会作为单行结果集,自动返回给客户。但是,如果过程必须给客户提供行,则使用无游标的 SELECT 语句,更为有效。
在每个 FETCH 之后,@@FETCH_STATUS 函数均被更新。它和 PL/SQL 中使用的 CURSOR_NAME%FOUND 和 CURSOR_NAME%NOTFOUND 变量用法类似。每次成功提取后,
@@FETCH_STATUS 函数值被设为 0。如果该提取要读取游标结尾之外的地方,则返回值 -1。如果游标打开后,请求的行已被从表中删除,则 @@FETCH_STATUS 函数返回 -2。通常,返回值 -2 只在使用 SCROLL 选项声明的游标中出现。每次提取后,必须检查该变量,以保证数据的有效性。 SQL Server 不支持 Oracle 的游标 FOR 循环语法。
在 PL/SQL 和 Transact-SQL 中,用于更新和删除的 CURRENT OF 子句语法和函数是相同的。定位 UPDATE 或 DELETE 用于对指定游标内的当前行进行更新和删除操作。
Transact-SQL CLOSE CURSOR 语句关闭游标,但数据结构仍可用于重新打开游标。PL/SQL CLOSE CURSOR 语句关闭并释放所有的数据结构。
Transact-SQL 需要使用 DEALLOCATE CURSOR 语句,删除游标数据结构。DEALLOCATE CURSOR 语句与 CLOSE CURSOR 的不同之处在于,关闭的游标可以重新打开。DEALLOCATE CURSOR 语句释放所有与游标有关的数据结构,并删除游标的定义。
下面示例给出了,PL/SQL 和 Transact-SQL 中对等的游标语句。
Oracle DECLARE VSSN CHAR(9); VFNAME VARCHAR(12); VLNAME VARCHAR(20); Microsoft SQL Server DECLARE @VSSN CHAR(9), @VFNAME VARCHAR(12), @VLNAME VARCHAR(20) CURSOR CUR1 IS DECLARE curl CURSOR FOR SELECT SSN, FNAME, LNAME SELECT SSN, FNAME, LNAME FROM STUDENT ORDER BY LNAME; FROM STUDENT ORDER BY SSN BEGIN OPEN CUR1 OPEN CUR1; FETCH NEXT FROM CUR1 FETCH CUR1 INTO VSSN, VFNAME, INTO @VSSN, @VFNAME, @VLNAME VLNAME; WHILE (@@FETCH_STATUS <> -1) WHILE (CUR1%FOUND) LOOP BEGIN FETCH CUR1 INTO VSSN, VFNAME, FETCH NEXT FROM CUR1 INTO @VSSN, VLNAME; @VFNAME, @VLNAME END LOOP; END CLOSE CUR1; CLOSE CUR1 END; DEALLOCATE CUR1 优化 SQL 语句
本节提供了用于优化 Transact-SQL 语句的一些 SQL Server 工具的信息。有关优化 SQL Server 数据库的详细信息,请参见本卷前面的“性能优化”。
可以使用 SQL Server 查询分析器的图形显示计划功能,了解优化程序处理语句的详细信息。 此图形工具可以实时地捕获服务器活动的连续记录。SQL Server 事件探查器监视多个不同的服务器事件和事件类别,使用用户定义的标准筛选这些事件,并把跟踪记录输出到屏幕、文件或其它 SQL Server。
SQL Server 事件探查器可用于:
? ? ? ? ? ?
监视 SQL Server 的性能。
调试 Transact-SQL 语句和存储过程。 确定执行缓慢的查询。
解决 SQL Server 中的问题。通过捕获引起某一特定问题的所有事件,然后在测试系统上重现这些事件,以重复和分离该问题,达到解决问题的目的。
在项目开发阶段,通过单步执行语句,每次一行,测试 SQL 语句和存储过程,来确认代码是否按照预期结果执行。
在生产系统上捕获事件,并在测试系统上重现所捕获的那些事件,从而为测试或调试重建了生产环境中所发生的事件。通过在其它系统中重现所捕获的事件,用户可继续使用生产系统,而不会影响正常工作。
SQL Server 事件探查器给一组扩展存储过程提供了图形用户界面。也可以直接使用这些扩展存储过程。因此,可以创建自己的应用程序,它使用 SQL Server 事件探查器扩展存储过程监视 SQL Server。
SET 语句可以为工作会话期、触发器或存储过程运行期设定 SQL Sever 查询处理选项。 SET FORCEPLAN ON 语句强制优化程序按照表在 FROM 子句中出现的顺序处理联接,类似 Oracle 优化程序中使用的 ORDERED 提示。
SET SHOWPLAN_ALL 和 SET SHOWPLAN_TEXT 语句只返回查询或语句的执行计划信息,但不执行查询或语句。要运行查询或语句,将相应的显示计划语句设为 OFF。然后,查询或语句就会执行。SHOWPLAN 选项与 Oracle EXPLAIN PLAN 工具提供的结果类似。
使用 SET STATISTICES PROFILE ON,每个执行的查询返回标准的结果集,然后,返回附加结果集(给出查询执行的事件探查)。其它选项包括 SET STATISTICS IO 和 SET STATISTIECS TIME。 Transact-SQL 语句处理包括分两步,即编译和执行。NOEXEC 选项编译每个查询,但不执行。NOEXEC 设为 ON 时,不执行随后的语句(包括其它 SET 语句),直到 NOEXEC 设为 OFF 为止。 SET SHOWPLAN ON SET NOEXEC ON
go
SELECT * FROM DEPT_ADMIN.DEPT, STUDENT_ADMIN.STUDENT WHERE MAJOR = DEPT go STEP 1
The type of query is SETON STEP 1
The type of query is SETON STEP 1
The type of query is SELECT FROM TABLE DEPT_ADMIN.DEPT Nested iteration Table Scan FROM TABLE
STUDENT_ADMIN.STUDENT Nested iteration Table Scan
Oracle 需要使用提示,来调整基于开销的优化程序的操作和性能。Microsoft SQL Server 基于开销的优化程序不需要使用提示,来协助其查询评估过程。但是在某些情况下,确有使用它们的必要。
INDEX = {index_name | index_id} 提示指定了该表使用的索引名或 ID。 index_id 为 0,就会强制一个表扫描,而当 index_id 为 1,则强制使用聚集索引(如存在)。这和 Oracle 中使用的索引提示类似。
如果其列顺序和 ORDER BY 子句匹配,SQL Server FASTFIRSTROW 提示就会指示优化程序使用非聚集索引。这个提示的运行方式和 Oracle FIRST_ROWS 提示类似。
定义数据库对象
Oracle 数据库对象(表、视图和索引)可以很方便地迁移到 Microsoft SQL Server,因为每种 RDBMS 都严格遵循 SQL-92 标准,该标准是一个关于对象定义的标准。将 Oracle SQL 表、索引和视图定义转换为 SQL Server 表、索引和视图定义,只需要进行相对简单的语法更改即可。下表着重阐述了,Oracle 和 Microsoft SQL Server 数据库对象之间的一些差异。
类别 列数 行大小 Microsoft SQL Server Oracle 1024 254 8060 字节,加 16 字节指向每个 没有限制(但每行只允许一个 long 或 long raw) 最大行数 没有限制 没有限制 每表一个 long 或 和行一起存储的 16 字节指针。long raw。必须在行BLOB 类型存储 数据存储在其它数据页上。 尾。数据存储在与行相同的块上。 每表一个(索引组织的聚集的表索引 每表一个 表) 非聚集的表索引 每表 249 个 没有限制 单索引中索引的16 16 最大列数 索引中列值的最900 字节 1/2 块 大长度 [[[server.]database.]owner.] 表命名规则 [schema.]table_name table_name [[[server.]database.]owner.] 视图命名规则 [schema.]table_name table_name [[[server.]database.]owner.] 索引命名规则 [schema.]table_name table_name 假定您从用来创建数据库对象的 Oracle SQL 脚本或程序入手。只要复制这个脚本或程序,并进行下列修改即可。每个更改均在本节的其它部分进行了讨论。该例取自脚本示例程序脚本 Oratable.sql 和 Sstable.sql。
相关推荐:
- [互联网资料]2022年厦门大学机电工程系824机械设计
- [互联网资料]东南大学2022年硕士研究生拟录取名单公
- [互联网资料]能源调研报告(精选多篇)
- [互联网资料]初三英语下学期 中考英语 语法填空训练
- [互联网资料]2022内蒙古选调生行测常识备考:新事物
- [互联网资料]自驾必备!在新西兰租什么样的车自驾游
- [互联网资料]佛教素食菜谱44页未完
- [互联网资料]盈利能力分析外文翻译
- [互联网资料]2022年南昌航空大学音乐学院736马克思
- [互联网资料]优选外贸跟单实习报告总结(精品版)
- [互联网资料]银行新员工培训总结
- [互联网资料]2_year_visa_new_guidance_190316
- [互联网资料]天津市五校宝坻一中静海一中杨村一中芦
- [互联网资料]2007--2008学年第一学期高三数学宁波市
- [互联网资料]Chromatic framework for vision in ba
- [互联网资料]幼儿园大班上学期美术教案《心愿树》含
- [互联网资料]2022年华中农业大学信息学院820微型计
- [互联网资料]硬盘坏道的表现 __硬盘使用久了
- [互联网资料]江苏省2016年会计从业资格考试《会计基
- [互联网资料]公共场所卫生监督试卷全解
- 高级英语第一册所有修辞方法及例子总结
- 综合交通枢纽规划与城市发展
- 沃尔玛的企业文化案例分析
- 美国Thanksgiving Day 感恩节 介绍
- PEP六年级英语上册Unit6How do you fee
- 最齐全的中国大型商场购物中心名单
- 数据结构实验报告八—哈夫曼编译码
- 杭州市余杭区人民政府(通知)
- 七年级语文成语运用专项训练
- 微观经济学第三章 消费者行为 课后习题
- 对_钱学森之问_的思考
- Excel_三级联动_下拉菜单
- 办公用品需求计划申请表
- 对外汉语教材必须要知道的发展史
- 挑战杯大学生学术科技作品竞赛作品申报
- 举办民办教育培训机构应具备下列条件
- 太阳能路灯项目设计方案
- 2013年八年级上最新人教版新教材Unit3I
- 【历史】 6-4 《近代科学之父牛顿》 课
- 高中生物《第四章 第二节 探讨加酶洗衣




