1. Oracle基础

关于Oracle基础,以和SqlServer之间的对比进行展开。

1.1. 数据类型

数字、字符、日期等常见类型的差异对比:

SQL SERVER ORACLE
DECIMAL[(P[, S])] NUMBER[(P[, S])]
NUMERIC[(P[, S])] NUMBER[(P[, S])]
FLOAT[(N)] NUMBER[(N)]
INT NUMBER
SMALLINT NUMBER
TINYINT NUMBER
MONEY NUMBER[19,4]
SMALLMONEY NUMBER[19,4]
CHAR[(N)] CHAR[(N)]
VARCHAR[(N)] VARCHAR2[(N)]
DATETIME DATE
SMALLDATETIME DATE
TEXT CLOB
IMAGE BLOB
BIT NUMBER(1)

1.2. 表(主键、外键、CHECK、UNIQUE、DEFAULT、INDEX)

Oracle定义表字段的default属性紧跟字段类型之后

CREATE TABLE T_TABLE1(
ID NUMBER PRIMARY KEY,
-- 正确的DEFAULT定义
BIRTH_DATE DATE DEFAULT SYSDATE NOT NULL
);

CREATE TABLE T_TABLE2(
ID NUMBER PRIMARY KEY,
-- 错误的语法,DEFAULT必须跟在类型后
BIRTH_DATE DATE NOT NULL DEFAULT SYSDATE 
);

1.3. 存储过程

SqlServer:

CREATE PROCEDURE procedure_name
    (  /*输入、输出参数的声明部分*/  )
AS
    DECLARE
    /*局部变量的声明部分*/
BEGIN
    /*主体SQL语句部分*/
   /*游标声明、使用语句在此部分*/
END

Oracle:

CREATE OR REPLACE PROCEDURE procedure_name
   (  /*输入、输出参数的声明部分*/  )
AS
    /*局部变量、游标等的声明部分*/
BEGIN
    /*主体SQL语句部分*/
    /*游标使用语句在此部分*/
EXCEPTION
    /*异常处理部分*/
END ;

1.4. 变量和赋值

SqlServer:

-- 定义变量
DECLARE @CNT INT
DECLARE @NAME VARCHAR(20)
BEGIN
-- 变量赋值
    SET @CNT = 1;
    SELECT  @NAME = 'hello sqlserver';

    PRINT @CNT;
    PRINT @NAME;
END

Oracle:

DECLARE
  V_A INTEGER := 123;
  V_B VARCHAR2(64);
BEGIN
  V_B := 'hello oracle';
  DBMS_OUTPUT.PUT_LINE(V_A);
  DBMS_OUTPUT.PUT_LINE(V_B);
END;
/

参考引用:

Oracle基础

results matching ""

    No results matching ""