介绍一下TSQL与PL/SQL的区别

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'

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)cursor

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)trigger

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)procedure

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
)

TSQL与PL/SQL的区别相关推荐

  1. TSQL与PL/SQL的比较

    TSQL与PL/SQL的比较 以前一直用mssql 做开发,最近的项目都Oracle, 1)数据类型 TSQL PL/SQL numeric(p,s) numeric(p,s) or NUMBER(p ...

  2. TSQL与PL/SQL的比较(不完全版)

    TSQL与PL/SQL的比较 1)数据类型 TSQL PL/SQL numeric(p,s) numeric(p,s) or NUMBER(p,s) decimal(p,s) decimal(p,s) ...

  3. T-SQL与PL/SQL的比较

    T-SQL与PL/SQL的比较 以前一直用mssql 做开发,最近的项目都Oracle,T-SQL与PL/SQL比较下怎么样呢,从网上搜索下相关的资料,整理如下: 1)数据类型 TSQL PL/SQL ...

  4. PL/SQL和sql是什么区别?

    https://zhidao.baidu.com/question/187511430.html PL/SQL和sql是什么区别? cgxnjnj | 浏览 17977 次 2010-09-30 20 ...

  5. oracle导入del数据文件,pl/sql,Oracle数据库中,不小心delete数据并递交后如何恢复被删数据...

    用pl/sql developer导出表的数据时有三种方式:Oracle Export,Sql Insert,pl/sql developer 区别 导出数据到excel文件 excel数据导入到数据 ...

  6. SQL/PL SQL

    1 sql(数据定义语言) 和PL/Sql的区别: 答:SQL是结构化查询语言,比较接近自然语言,使用SQL,只需要说干什么,不需要说怎么干.由数据定义语言.数据操纵语言.数据控制语言构成,它不面向过 ...

  7. SQL   PL/SQL   SQL*PLUS三者的区别

    在SQL*Plus中可以处理三种类型的命令:SQL语句.PL/SQL块和SQL*Plus命令. 但三者之间是有区别的. 1)SQL语句是以数据库为操作对象的语言,主要包括数据定义语言DDL.数据操纵语 ...

  8. PL/SQL中,declare定义变量和variable定义变量的区别?

    用declare声明的变量作用在block中. variable是sqlplus中定义变量的命令.他定义的变量在一个sqlplus连接中有效. SQL> show user USER 为&quo ...

  9. ocp跟oce的区别 oracle_Oracle PL/SQL实战

    本书特色 汇聚Oracle专家集体智慧 内容贴近实战,讲解透彻精彩 DBA修炼内力必读秘籍 "本书作者阵容强大,内容全面实用,期待更多这种形式的技术书."--亚马逊读者评论 ...

最新文章

  1. 第二章:1、函数求导
  2. 2022年,PyTorch在AI顶会的占比已经上80%了
  3. 【深度学习笔记】关键点检测——标签(Ground Truth)构建
  4. 实现小数据量和海量数据的通用分页显示存储过程
  5. Serverless 如何在阿里巴巴实现规模化落地?
  6. Spring【AOP模块】就是这么简单
  7. Visual C#3.0新特性概览
  8. 5/5 MySQL入门总结:其它操作
  9. S4 extension field的异步创建和后台作业
  10. 华科05-03年计算机考研复试机试
  11. Java 替换字符串中的回车换行符的方法
  12. Android支付实践(三)之银联支付功能(客户端+服务端)
  13. 10562:Undraw the Trees
  14. 检查库文件的rpath命令
  15. SpringBoot整合JPA(六)
  16. MUX-VLAN隔离技术
  17. 立创EDA能代替传统的PCB设计软件么?比如AD、protel等?可以
  18. python-小米-句子反转
  19. csdn博客文章头部自动生成目录
  20. Synchronized 用法以及和ReetrantLock的区别

热门文章

  1. 【已解决】探究CUDA out of memory背后原因,如何释放GPU显存?
  2. WinPE启动U盘的制作方法与软件下载(通用PE工具箱/老毛桃/大白菜WinPE)
  3. pandas金融数据处理
  4. php获取动态ts文件,2018-07-08 ts-php 提取succ
  5. 【经验分享】GPU 显存不足怎么办?
  6. 帆软10.0突然出现黑色框线以及打印预览出现plain问题
  7. ASP.NET MVC3 快速入门
  8. Java运算符(1)
  9. 打破数据量瓶颈 数据堂推出超大规模英语发音词典
  10. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java陈氏商城9pd36