1)数据类型

TSQL

PL/SQL

numeric(p,s)

numeric(p,s) or NUMBER(p,s)

decimal(p,s)

decimal(p,s) or NUMBER(p,s)

char(m)

Char(m)

varchar(m)

varchar2(m)

datetime

date

记录

Record

表字段

%type

表记录

%rowtype

Table

自动增长变量

AUTOINCREMENT

2)变量声明、赋值与引用

TSQL

PL/SQL

声明

declare

@ls_casher char(1),

@ln_payAmt decimal(14,4)

declare

on_hand INTEGER;

ls_casher char(1);

赋值

select @ls_casher = 'A' or set@is=’A’

ls_casher:=’A’;

引用

if @ ls_casher = 'A'

if ls_casher = 'A' then

在SQL语句中赋值

SELECT @ls_casher=sal FROM emp WHERE empno = emp_id;

SELECT sal INTO ls_casher FROM emp WHERE empno = emp_id;

在SQL语句中引用

SELECT * FROM emp WHERE sal = @ls_casher;

SELECT * FROM emp WHERE sal = ls_casher;

3)函数与操作符

字符串

TSQL

PL/SQL

连接

+

||

TRIM

LTRIM、RTRIM

SUBSTRING

SUBSTR、SUBSTRB

INSTR、INSTRB

right(str,n)

substr(str,-n)

日期

TSQL

PL/SQL

系统日期

getdate()

SYSDATE

空值判断与处理

TSQL

PL/SQL

判断

IS NULL

IS NULL

空值替换

Isnull(para,0)

NVL(para,0)

REPLACE(old_string, NULL, my_string)

 转换

TSQL

PL/SQL

字符->日期

Convert(datetime, expr, style)

To_Date(format, expr)

字符<-日期、数值

Convert(char(n), expr, style)

To_char(expr,format)

数值

To_Number()

语句

TSQL

PL/SQL

statement block

BEGIN...END

BEGIN...END;

conditional

1) IF…ELSE…

2) IF…ELSE IF…else…

3) CASE

1)IF..then...ELSE…end if;

2)If…then…

elsif…else…endif

3)decode

Repeat

WHILE Boolean_expression

{statement_block}

[BREAK]

{statement_block}

[CONTINUE]

1)Loop …exit;…end loop;

2)loop…exit when…end loop;

3)WHILE condition LOOP

sequence_of_statements;

EXIT WHEN boolean_expression;

END LOOP;

3)for…in [reverse]…loop

end loop;

GOTO

GOTO label

label:

GOTO label;

<<label>>

Exits unconditionally

RETURN

Return;

Sets a delay for statement execution

WAITFOR

Comment

--

/*…*/

--

/*…*/

PRINT

PRINT string

Set serveroutput on

dbms_output.put_line(string);

RAISERROR

RAISERROR

EXECUTE

EXECUTE

NULL statement

NULL;

4)游标

TSQL

PL/SQL

DECLARE

DECLARE cursor_name CURSOR

[LOCAL | GLOBAL]

[FORWARD_ONLY | SCROLL]

[STATIC | KEYSET | DYNAMIC | FAST_FORWARD]

[READ_ONLY | SCROLL_LOCKS | OPTIMISTIC]

[TYPE_WARNING]

FOR select_statement

[FOR UPDATE [OF column_name [,...n]]]

DECLARE

CURSOR cursor_name IS

SELECT_statement;

open

Open cursor_name

Open cursor_name;

Fetch

Fetch cursor_name into

var1,var2…

Fetch cursor_name into

var1,var2…

||

%rowtype_var;

Close

Close cursor_name

Close cursor_name;

Attribute

@@FETCH_STATUS

@@CURSOR_ROWS

CURSOR_STATUS

%found

%notfound

%isopen

%rowcount

DEALLOCATE

DEALLOCATE cursor_name

隐式cursor

Select…into (仅可处理单行记录)

5)触发器

TSQL

PL/SQL

创建

CREATE TRIGGER trigger_name

ON table

[WITH ENCRYPTION]

{FOR {[DELETE][,][INSERT][,] [UPDATE] }

AS

sql_statement [...n]

}

Create or replace trigger t_name

{before|after}{insert|update|delete}

on table_name

[for each row [when conditional]

类型(按触发级别和时序)

语句

after

行或语句

before or after

访问数据操纵行的值

通过表Inserted、Deleted访问

通过记录 :New、 :Old访问,仅可用于行级触发器

谓词/函数/属性

Inserting、updating、deleteing

Updating(col)

Update(col)

使能

Alter table tabname {disable|enable} trigger {t_name|all}

Alter trigger t_name {disable|enable}

限制

作为触发语句的一部分,不可用事务控制命令

不能声明和使用LONG、LONG RAW变量和列

删除

Drop trigger t_name

Drop trigger t_name;

6)过程

TSQL

PL/SQL

创建

CREATE PROCEDURE] p_name

[ {@parameter data_type} [VARYING] [= default] [OUTPUT] ] [,...n]

[WITH

{

RECOMPILE | ENCRYPTION

| RECOMPILE, ENCRYPTION

}

]

AS

sql_statement [...n]

Create or replace procedure p_name

[Para1 {in|out|inout} datatype[,…]

[{:=|default} default_value]]

{IS|AS}

查询

删除

DROP PROCEDURE p_name

DROP PROCEDURE p_name;

调用

EXEC p_name [para1[,…]]

P_name[(para1[,…])];

参数

按位置传递

1)按位置传递

2)带名传递

P_name(para1=>var1);

debit_account(amount => 500, acct_id => 10261);

7)数据字典/系统表

TSQL

PL/SQL

系统对象表

Dbo.sysobjects

User_source、User_objects(OBJ)、User_tables(TABS)、User_triggers、ALL_tables、All_View、All_catalog、All_objects

对象脚本

sp_helptext

DESC、ALL_source

用户表

Sysusers

All_users

表列

All_tab_columns

依赖

All_dependencies

字典表说明

DICT

8)SQL

TSQL

PL/SQL

Select

Select @var=<value>

Select value into var from dual

Insert

insert / insert into

insert into

Delete

比较

Any, some, all

集合

Union、Union all、Intersect、Minus、

9)全局变量

TSQL

PL/SQL

语句执行成功

error

SQLCODE

select 是否有结果

exists

select...into + SQL%FOUND

10)     命令行查询工具

ISQL

SQL PLUS

读取、执行SQL文件

Isql –Usa –Ppass –Shost –ifile

sqlplus [-s] user/pass@db -@filename

11)     杂项

TSQL

PL/SQL

在SQL语句中

Insert…With tablock

Insert…With Tablockx

Select…for update

Select…for readonly

独立语句

set transcation isolation level to Read uncommited

在SQL语句中

select …for update of…;

独立语句

lock table tabname in row share mode;

lock table tabname in share exclusive mode;

用户连接数

数据库文件

Device

Tablespace

CREATE TABLESPACE testdb DATAFILE 'C:\ORANT\DATABASE\testdb.ORA' SIZE 20M AUTOEXTEND ON NEXT 2M;

CREATE ROLLBACK SEGMENT "RB_TESTDB" TABLESPACE "TESTDB";

ALTER ROLLBACK SEGMENT "RB_TESTDB" ONLINE;

显示DML执行计划

Show plan

Explain plan

保留点

¨         Save transcation Sp_name

¨         ROLLBACK TRANSACTION percentchanged

¨         Savepoint Sp_name

¨         Rollback to savepoint sp_name

对模式对象改名

Rename

分析对象

Analyze

Sp_help?

1. select into 语法
 
   现在有表

tablea 

 cola int ,
 colb varchar(20)
)

要把tablea中满足条件(cola <100)的记录生成新的表tableb。
 
   在ms sqlserver 可以直接用select into语法:

select * into tableb 
where cola < 100

在oracle中语法如下:

create table tableb 
as 

  select * from tablea 
    where cola <100 
)

全面对比T-SQL与PL/SQL的更多相关文章

  1. SQL with PL/SQL

    DDL commands --> create user / table / view / sequence alter DML --> data manipulation languag ...

  2. SQL和PL/SQL的区别

    SQL和PL/SQL的区别 1. SQL是结构化查询语言,比较接近自然语言,使用SQL,只需要说干什么,不需要说怎么干.由数据定义语言.数据操纵语言.数据控制语言构成,它不面向过程,即前一条语句与后一 ...

  3. [PL/SQL]使用PL/SQL实现ORACLE的Excel格式导入导出

    注:教程所使用的PL/SQL Developer版本为10版本 1.oracle导出excel格式 第一步,在pl/sql窗口查询出你想要导出的数据. 第二步,选择你想导出的数据,然后右键" ...

  4. 动态SQL和PL/SQL的EXECUTE选项分析

    EXECUTE IMMEDIATE代替了以前Oracle8i中DBMS_SQL package包.它解析并马上执行动态的SQL语句或非运行时创建的PL/SQL块.动态创建和执行SQL语句性能超前,EX ...

  5. SQL、PL/SQL、DDL、DML、TCL介绍

    SQL:结构化查询语言(Structured Query Language) PL/SQL:过程化SQL语言(Procedural Language/SQL) DDL(Data Definition ...

  6. 【PL/SQL编程】SQL与PL/SQL的区别

    SQL概念: SQL是结构化查询语言,由数据定义语言.数据操纵语言.数据控制语言构成,它不面向过程,即前一条语句与后一条语句无关.它没有流程控制,也不存在变量. PL SQL概念:    PL/SQL ...

  7. PL/SQL不能格式化SQL:--PL/SQL Beautifier could not parse text

    PL/SQL sql语句美化器点击没有反应.查看下面提示PL/SQL Beautifier could not parse text.本人此次产生的原因是sql语句语法错误. 工具栏处(如果没有此按钮 ...

  8. Oracle 和pl/sql以及pl/sql developer

    oracle是厂家的名字,也是数据库产品的名字.比如sybase公司的sybase数据库.而微软公司的数据库产品就叫sqlserver了. pl/sql 是oracle数据库所用的sql语言的名称.微 ...

  9. PL\SQL和PL/SQL Developer 12安装与配置

    安装: (1)在已有安装包的情况下,直接将安装包解压到文件夹下,注意不要解压缩到c:\programs Files(x86)的文件夹下,不能解压缩到有中文文件夹命名的文件夹下面 (2)没有安装包的情况 ...

随机推荐

  1. echart line 初始化隐藏legend

    echart line,当line很多,且各line的取值区间相关非常大时,多条line同时显示,其实是没有太大的可读性的,因此需要在初始化时,把部分不太重要的legend隐藏起来. 具体做法如下: ...

  2. Ext.NET Combobox实现数据源静态配置

    背景 项目中使用增值税税率, 需求原本是统一的指定税率, 譬如3% 5% 等固定的. 随着业务增加, 发现不同业务有不同的税率, 一会加一个, 一下要改很多个界面. 就想着放到统一的地方. 技术背景 ...

  3. SQLite3数据库

    #SQLite可视化管理工具(SQLite Expert Pro) SQLite特点: 1. 遵守ACID(原子性.一致性.隔离性和持久性)的关系型数据库管理系统:2. 不是一个C/S结构的数据库引擎 ...

  4. Linux 双网卡配置两个IP同时只有一个会通的原因

    http://blog.csdn.net/centerpoint/article/details/38542719 根本原因: Linux默认启用了反向路由检查 如果2个网卡在一个Lan里面,那么服务 ...

  5. Navicat Premium 将sqlserver 数据库 导入mysql 中

    1.新建 MySQL 数据库  2.  3 4 5 6 7 8 9一直点击下一步 10 成功

  6. MySql存储过程与函数详解

    存储过程和函数是在数据库中定义一些SQL语句的集合,然后直接调用这些存储过程和函数来执行已经定义好的SQL语句.存储过程和函数可以避免开发人员重复的编写相同的SQL语句.而且,存储过程和函数是在MyS ...

  7. idea 和eclipse的debug调试快捷键对比

    IntelliJ Idea 常用快捷键列表 Ctrl+Shift + Enter,语句完成“!”,否定完成,输入表达式时按 “!”键Ctrl+E,最近的文件Ctrl+Shift+E,最近更改的文件Sh ...

  8. c#,Model 实体转json,字符串转json

    public class JsonF { #region 字符串转json /// <summary> /// 字符串转json /// </summary> /// < ...

  9. ES6入门箭头函数

    箭头函数: 箭头函数可以与变量结构相结合(箭头函数返回对象的时候必须要在对象外边加()) 注意: 1️⃣函数体内的this是定义时所在的对象,而不是使用时的对象 2️⃣不可以当成构造函数,不可用new ...

  10. JAVA面试精选【Java基础第二部分】

    上一篇,我们给出了大概35个题目,都是基础知识,有童鞋反映题目过时了,其实不然,这些是基础中的基础,但是也是必不可少的,面试题目中还是有一些基础题目的,我们本着先易后难的原则,逐渐给出不同级别的题目, ...