Oracle和SQLServer的语法区别(4)
TUITION_PAID/GET_SUM_ MAJOR(MAJOR) AS PERCENT_MAJOR FROM STUDENT_ADMIN.STUDENT TUITION_PAID/SUM_MAJOR AS PERCENT_MAJOR FROM STUDENT_ADMIN.STUDENT, (SELECT MAJOR, SUM(TUITION_PAID) SUM_MAJOR FROM STUDENT_ADMIN.STUDENT GROUP BY MAJOR) SUM_STUDENT WHERE STUDENT.MAJOR = SUM_STUDENT.MAJOR CREATE OR REPLACE FUNCTION GET_SUM_MAJOR (INMAJOR VARCHAR2) RETURN NUMBER AS SUM_PAID NUMBER; BEGIN 不需要 CREATE FUNCTION 语法;使SELECT SUM(TUITION_PAID) INTO 用 CREATE PROCEDURE 语法。 SUM_PAID FROM STUDENT_ADMIN.STUDENT WHERE MAJOR = INMAJOR; RETURN(SUM_PAID); END GET_SUM_MAJOR; Oracle 和 Microsoft SQL Server 比较运算符几乎是相同的。
运算符 Oracle Microsoft SQL Server 等于 (=) (=) 大于 (>) (>) 小于 (<) (<) 大于或等于 (>=) (>=) 小于或等于 (<=) (<=) 不等于 (!=, <>, ^=) (!=, <>, ^=) 不大于,不小于 暂缺 !> , !< 在集合的任何成员中 IN IN 不在集合的任何成员NOT IN NOT IN 中 集合中的任一值 ANY, SOME ANY, SOME != ALL, <> ALL, < ALL, != ALL, <> ALL, < ALL, > ALL, <= ALL, >= > ALL, <= ALL, >= 引用集合中的 ALL, != SOME, <> SOME, ALL, != SOME, <> SOME, 所有值 < SOME, > SOME, < SOME, > SOME, <= SOME, >= SOME <= SOME, >= SOME 与模式相似 LIKE LIKE 与模式不相似 NOT LIKE NOT LIKE x 和 y 之间的值 BETWEEN x AND y BETWEEN x AND y 不在两者之间的值_ NOT BETWEEN 值存在 EXISTS 值不存在 NOT EXISTS 值{为|不为} NULL NOT BETWEEN EXISTS NOT EXISTS 相同。也可以使用 = NULL、 IS NULL, IS NOT NULL !=NULL,用于向后兼容性(不推荐使用)。 模式匹配
SQL Server LIKE 关键字提供了一些 Oracle 不支持的、有用的通配符搜索选项。除了支持两个 RDBMS 通用的 % 和 _ 通配符外,SQL Server 还支持 [] 和 [^] 字符。
[] 字符用于在给定范围内搜索某一单个字符。例如,如果在单字符位置搜索从 a 到 f 的字符,可以用 LIKE '[a-f]' 或 LIKE '[abcdef]' 指定。此表给出了这些附加通配符的用法。
Oracle SELECT * FROM STUDENT_ADMIN.STUDENT WHERE LNAME LIKE 'A%' OR LNAME LIKE 'B%' OR LNAME LIKE 'C%' Microsoft SQL Server SELECT * FROM STUDENT_ADMIN.STUDENT WHERE LNAME LIKE '[ABC]%' [^] 通配符集合用于指定不在给定范围内的字符。例如,如果接受除 a 到 f 以外的任何字符,则使用 LIKE '[^a - f]' 或 LIKE '[^abcdef]'。
有关 LIKE 关键字的详细信息,请参见 SQL Server Books Online。
NULL 用法对比
尽管 Microsoft SQL Server 传统上支持 SQL-92 标准以及其它一些非标准的 NULL 行为,但是它也支持 Oracle 中 NULL 的用法。
要执行分布式查询,SET ANSI_NULLS 应该设为 ON。
SQL Server ODBC 驱动程序和 SQL Server 的 OLE DB提供程序连接时,就会自动把 SET ANSI_NULLS 设为 ON。此设置可以在 ODBC 数据源、ODBC 连接属性设定,或者连接 SQL Server 前,在应用程序中设置的 OLE DB 连接属性中设定。对来自 DB-Library 应用程序的连接,SET ANSI_NULLS 默认为 OFF。
当 SET ANSI_DEFAILTS 为 ON 时,就会启用 SET ANSI_NULLS。 有关使用 NULL 的详细信息,请参见 SQL Server Books Online。
字符串串联
Oracle 将两个管道符号 (||) 作为字符串串联运算符,而 SQL Server 则使用加号 (+)。这种差别只需要对应用程序代码进行小小的修改即可。
Oracle Microsoft SQL Server SELECT FNAME||' '||LNAME AS SELECT FNAME +' '+ LNAME AS NAME NAME FROM STUDENT_ADMIN.STUDENT FROM STUDENT_ADMIN.STUDENT 控制流语言控制 SQL 语句、语句块和存储过程的执行数据流。PL/SQL 和 Transact SQL 提供了许多相同的结构,但在语法上有一些差异。
关键字
以下是每种 RDBMS 支持的关键字。
语句 声明变量 语句块 Oracle PL/SQL DECLARE BEGIN...END; IFUTHEN, ELSIFUTHEN, ELSE ENDIF; 条件处理 无条件退出 RETURN 无条件退出到当前程序块结束后紧接着的EXIT BREAK 那条语句 重新开始一个 WHILE 暂缺 CONTINUE 循环 暂缺 等待指定的间隔 WAITFOR (dbms_lock.sleep) WHILE LOOPUEND LOOP; WHILE
Transact-SQL 和 PL/SQL 变量是使用 DECLARE 关键字来创建的。Transact-SQL 变量用 @ 来标识,并且像 PL/SQL 变量一样,第一次创建时该变量被初始化为空值。
Oracle DECLARE VSSN CHAR(9); VFNAME VARCHAR2(12); VLNAME VARCHAR2(20); VBIRTH_DATE DATE; VLOAN_AMOUNT NUMBER(12,2); Microsoft SQL Server DECLARE @VSSN CHAR(9), @VFNAME VARCHAR2(12), @VLNAME VARCHAR2(20), @VBIRTH_DATE DATETIME, @VLOAN_AMOUNT NUMERIC(12,2) Transact-SQL 不支持 %TYPE 和 %ROWTYPE 变量数据类型定义。在 DECLARE 命令中,不能对 Transact-SQL 变量进行初始化。Oracle NOT NULL 和 CONSTANT 关键字不能用在 Microsoft SQL Server 数据类型定义中。
与 Oracle LONG 和 LONG RAW 数据类型一样,text 和 image 数据类型不能用于变量声明。此外,不支持 PL/SQL 类型的记录和表定义。
变量赋值
Oracle 和 Microsoft SQL Server 提供以下方法,给局部变量赋值。
Oracle 赋值运算符 (:=) 用于从一行中选择列值的 SELECT...INTO 语法。 FETCHUINTO 语法 以下是一些语法示例。
Microsoft SQL Server SET @local_variable = value SELECT @local_variable = expression [FROMU] 用于为字面值、涉及其它局部变量的表达式或一行中的列值赋值。 FETCHUINTO 语法 Oracle DECLARE VSSN CHAR(9); Microsoft SQL Server DECLARE @VSSN CHAR(9), VFNAME VARCHAR2(12); VLNAME VARCHAR2(20); BEGIN VSSN := '123448887'; SELECT FNAME, LNAME INTO VFNAME, VLNAME FROM STUDENTS WHERE SSN=VSSN; END; @VFNAME VARCHAR(12), @VLNAME VARCHAR(20) SET @VSSN = '12355887' SELECT @VFNAME=FNAME, @VLNAME=LNAME FROM STUDENTS WHERE SSN = @VSSN 语句块
Oracle PL/SQL 和 Microsoft SQL Server Transact-SQL 支持使用 BEGINUEND 术语,来指定程序块。Transact-SQL 不要求在 DECLARE 语句后面使用语句块。在 Microsoft SQL Server 中,如果 IF 语句和 WHILE 循环执行不止一个语句,需要使用 BEGINUEND 语句块。
Oracle Microsoft SQL Server DECLARE DECLARE DECLARE VARIABLES ... DECLARE VARIABLES ... BEGIN -- THIS IS OPTIONAL SYNTAX BEGIN -- THIS IS REQUIRED SYNTAX PROGRAM_STATEMENTS ... PROGRAM_STATEMENTS ... IF ... IF ...THEN BEGIN STATEMENT1; STATEMENT1 STATEMENT2; STATEMENT2 STATEMENTN; STAT …… 此处隐藏:3164字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [互联网资料]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 《近代科学之父牛顿》 课
- 高中生物《第四章 第二节 探讨加酶洗衣




