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) 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 |
|
空值判断与处理
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 |
|
4)语句
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 string |
Set serveroutput on dbms_output.put_line(string); |
RAISERROR |
RAISERROR |
|
EXECUTE |
EXECUTE |
|
NULL statement |
NULL; |
5)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 (仅可处理单行记录) |
|
6)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; |
7)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); |
8)数据字典/系统表
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 |
|
9)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、 |
|
10) 全局变量
TSQL |
PL/SQL |
|
语句执行成功 |
error |
SQLCODE |
select 是否有结果 |
exists |
select...into + SQL%FOUND |
11) 命令行查询工具
ISQL |
SQL PLUS |
|
读取、执行SQL文件 |
Isql –Usa –Ppass –Shost –ifile |
sqlplus [-s] user/pass@db -@filename |
12) 杂项
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? |
13)对于TSQL autoincremental identity 字段的转换
drop table x cascade constraints
/
create table x
(
xxx number(10,0) not null,
yy varchar2(10) null ,
constraint pk_tab_xxxxxxx primary key (cc)
)
/
CREATE SEQUENCE "ISD"."TEST_SEQ" INCREMENT BY 1 START WITH 0 MAXVALUE 9999999999 MINVALUE 1 CYCLE CACHE 20 NOORDER;
/
CREATE OR REPLACE TRIGGER "ISD".TR_Create_Uniqure_key
BEFORE INSERT ON "ISD"."X" FOR EACH ROW
BEGIN
SELECT TEST_SEQ.nextval into :new.xxx FROM DUAL;
END;
/
insert into x(yy) values('888')
TSQL与PL/SQL的比较(不完全版)相关推荐
- TSQL与PL/SQL的比较
TSQL与PL/SQL的比较 以前一直用mssql 做开发,最近的项目都Oracle, 1)数据类型 TSQL PL/SQL numeric(p,s) numeric(p,s) or NUMBER(p ...
- T-SQL与PL/SQL的比较
T-SQL与PL/SQL的比较 以前一直用mssql 做开发,最近的项目都Oracle,T-SQL与PL/SQL比较下怎么样呢,从网上搜索下相关的资料,整理如下: 1)数据类型 TSQL PL/SQL ...
- TSQL与PL/SQL的区别
介绍一下TSQL与PL/SQL的区别 1)数据类型 TSQL PL/SQL numeric(p,s) numeric(p,s) or NUMBER(p,s) decimal(p,s) decimal( ...
- 《Oracle PL/SQL程序设计(第5版)》一一2.5 编辑PL/SQL的环境
本节书摘来自异步社区出版社<Oracle PL/SQL程序设计(第5版)>一书中的第2章,第2.5节,作者:[美]Steven Feuerstein , Bill Pribyl,更多章节内 ...
- 《Oracle PL/SQL程序设计(第5版)》一一2.4 执行必要的PL/SQL任务
本节书摘来自异步社区出版社<Oracle PL/SQL程序设计(第5版)>一书中的第2章,第2.4节,作者:[美]Steven Feuerstein , Bill Pribyl,更多章节内 ...
- 《精通Oracle Database 12c SQL PL/SQL编程(第3版)》代码下载
<精通Oracle Database 12c SQL & PL/SQL编程(第3版)>代码下载 清华大学出版社第五事业部 检索的时候关键词写Oracle,下面几个会有12C这个版本 ...
- 《Oracle PL/SQL程序设计(第5版)》一一1.6 一些建议
本节书摘来自异步社区出版社<Oracle PL/SQL程序设计(第5版)>一书中的第1章,第1.6节,作者:[美]Steven Feuerstein , Bill Pribyl,更多章节内 ...
- T-SQL、Jet SQL、PL-SQL
数据库分为网状.层状.关系.对象四种类型,目前的数据库一般都是属于关系数据库(如SQLServer.Oracle,MySQL等),网状.层状基本上已成历史,对象类型尚未普及. SQL 语言是有 ANS ...
- pl/sql 免安装客户端月经贴一篇
pl/sql直接安装上是不能连接到oracle的他需要媒介,即oracle提供的文件包.有两种方法获取, 一.到官网下载instantclient-basic-win32XX包,链接如下: http: ...
最新文章
- Spring MVC 相关资料整理
- django 1.8 官方文档翻译:2-5-9 条件表达式
- 【USACO Mar08】 奶牛跑步 A-star k短路
- 《Windows Server 2012 Hyper-V虚拟化管理实践》一第1章 Hyper-V服务器选型
- ibatis 批量插入
- 李彦宏要给百度全员涨薪 连实习生都雨露均沾 :再没有行动,人都要被字节跳动给挖光了。
- XCTF(攻防世界)—进阶web题Write Up(一)
- idea怎么创建python项目_idea创建django项目
- [JavaWeb-MySQL]数据库的备份和还原
- 深度学习(机器学习)模型压缩开源库整理
- 安装出现 PHP Extension curl must be loaded 错误(magento)
- 一个女人如何让自已越来越厉害
- 时间序列分析及应用r语言pdf_R语言时间序列分析(十一):指数平滑法
- 在MySQL中,一条查询语句是如何执行的
- Java学习教程,Java基础教程(从入门到精通)
- 最新区块链科普图书《区块链进化史》上市
- android 滤镜 原理,android openglse实现滤镜九宫格
- ​stp文件转wrl
- 免费简单好用的屏幕录制工具——Captura
- Docker基础之安装部署
热门文章
- MySQL8.0 OCP最新版1Z0-908认证考试题库整理-006
- Nonce Used1
- 偏微分方程的MATLAB解法
- miniconda的安装及使用
- 17.sql server数据库使用规则、二八原则、数据库查询集群--数据库读写分离多种实现、数据库配置读写分离(by-朝夕)
- 自动驾驶中基于地图的视觉定位方法
- DR,CR,DX区别
- 浅谈WEBGIS运用栅格地图实现原理[更新:Google Maps带来的新型WebGIS设计模式]
- 计算机硬件品牌的调研报告,计算机硬件市场调查报告.doc
- 已解决FileNotFoundError: [WinError 2] 系统找不到指定的文件。