全面对比T-SQL与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' 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 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 |
要把tablea中满足条件(cola <100)的记录生成新的表tableb。
在ms sqlserver 可以直接用select into语法:
|
select * into tableb |
在oracle中语法如下:
|
create table tableb |
全面对比T-SQL与PL/SQL的更多相关文章
- SQL with PL/SQL
DDL commands --> create user / table / view / sequence alter DML --> data manipulation languag ...
- SQL和PL/SQL的区别
SQL和PL/SQL的区别 1. SQL是结构化查询语言,比较接近自然语言,使用SQL,只需要说干什么,不需要说怎么干.由数据定义语言.数据操纵语言.数据控制语言构成,它不面向过程,即前一条语句与后一 ...
- [PL/SQL]使用PL/SQL实现ORACLE的Excel格式导入导出
注:教程所使用的PL/SQL Developer版本为10版本 1.oracle导出excel格式 第一步,在pl/sql窗口查询出你想要导出的数据. 第二步,选择你想导出的数据,然后右键" ...
- 动态SQL和PL/SQL的EXECUTE选项分析
EXECUTE IMMEDIATE代替了以前Oracle8i中DBMS_SQL package包.它解析并马上执行动态的SQL语句或非运行时创建的PL/SQL块.动态创建和执行SQL语句性能超前,EX ...
- SQL、PL/SQL、DDL、DML、TCL介绍
SQL:结构化查询语言(Structured Query Language) PL/SQL:过程化SQL语言(Procedural Language/SQL) DDL(Data Definition ...
- 【PL/SQL编程】SQL与PL/SQL的区别
SQL概念: SQL是结构化查询语言,由数据定义语言.数据操纵语言.数据控制语言构成,它不面向过程,即前一条语句与后一条语句无关.它没有流程控制,也不存在变量. PL SQL概念: PL/SQL ...
- PL/SQL不能格式化SQL:--PL/SQL Beautifier could not parse text
PL/SQL sql语句美化器点击没有反应.查看下面提示PL/SQL Beautifier could not parse text.本人此次产生的原因是sql语句语法错误. 工具栏处(如果没有此按钮 ...
- Oracle 和pl/sql以及pl/sql developer
oracle是厂家的名字,也是数据库产品的名字.比如sybase公司的sybase数据库.而微软公司的数据库产品就叫sqlserver了. pl/sql 是oracle数据库所用的sql语言的名称.微 ...
- PL\SQL和PL/SQL Developer 12安装与配置
安装: (1)在已有安装包的情况下,直接将安装包解压到文件夹下,注意不要解压缩到c:\programs Files(x86)的文件夹下,不能解压缩到有中文文件夹命名的文件夹下面 (2)没有安装包的情况 ...
随机推荐
- 用juniversalchardet解决爬虫乱码问题
爬虫往往会遇到乱码问题.最简单的方法是根据http的响应信息来获取编码信息.但如果对方网站的响应信息不包含编码信息或编码信息错误,那么爬虫取下来的信息就很可能是乱码. 好的解决办法是直接根据页面内容来 ...
- requests模块的cookie和代理操作
一.基于requests模块的cookie操作 引言:有些时候,我们在使用爬虫程序去爬取一些用户相关信息的数据(爬取张三“人人网”个人主页数据)时,如果使用之前requests模块常规操作时,往往达不 ...
- string类和stringBuilder类
字符串是C#中的一种重要数据类型,在项目开发中,离不开字符串操作.C#提供了string类实现字符串操作.于Convert类相似,string类中方法有静态方法和非静态方法.注意,在C#中String ...
- 点击复制内容到剪切板(clipboard)
clipboard官方文档:https://clipboardjs.com/ 安装: 1.用npm:npm install clipboard --save 2.下载:https://github.c ...
- Python入门-随机漫步
Python入门-随机漫步,贴代码吧,都在代码里面 代码1 class文件 random_walk.py from random import choice class RandomWalk(): # ...
- 37.scrapy解决翻页及采集杭州造价网站材料数据
1.目标采集地址: http://183.129.219.195:8081/bs/hzzjb/web/list 2.这里的翻页还是较为简单的,只要模拟post请求发送data包含关键参数就能获取下一页 ...
- Linq的常见查询
首先定义几个模型类: /// <summary> /// 员工类 /// </summary> public class Employee { /// <summary& ...
- centos7挂载本地yum文件
https://www.cnblogs.com/aenjon/p/4081794.html
- MonGoDB 常见操作, 设置管理员和用户登入
[ 启动客户端 => ./bin/mongo --host 192.168.200.100 ] 1: 查看所有已经创建的数据库 => show dbs 2: 切换或者创建数据库 ...
- Linux 指令(一)文件/目录操作
1. 创建目录 mkdir 格式 mkdir [OPTION]... DIRECTORY... 选项 -p 递归创建 -v 创建时提示 例: root@ubuntu:/home/eko/x# mkdi ...