TSQL与PL/SQL的比较(不完全版)
来源:互联网 发布:看手机mac 编辑:程序博客网 时间:2024/06/05 02:58
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的比较
- TSQL与PL/SQL的比较
- TSQL与PL/SQL的比较
- TSQL与PL/SQL的比较
- TSQL与PL/SQL的区别
- sql,pl/sql,tsql总结
- T-SQL与PL/SQL的比较
- Tsql与plsql语法比较,不断更新
- ORACLE PL/SQL与SQL SERVER T-SQL一些比较
- ORACLE PL/SQL与SQL SERVER T-SQL一些比较
- ORACLE PL/SQL与SQL SERVER T-SQL一些比较
- tsql和PLSQL常用函数的比较
- Oracle SQL Developer与PL/SQL Developer比较【转】
- Oracle SQL Developer与PL/SQL Developer比较
- SQL Server 2005的TSQL查询新功能
- SQL Server 2005的TSQL查询新功能
- JAVA操作XML的完整例子——W3C DOM篇
- 世界上最美的诗---妈妈别哭,孩子不哭!
- Customizing WinCE Fonts
- VS2005中的代码格式化
- File,FileInputStream,FileOutputStream以及一个复制文件的例子
- TSQL与PL/SQL的比较(不完全版)
- 运用虚拟/抽象/接口实现多态的例子(-)--虚拟类.
- 表格动态添加删除一行
- 常见木马的手工清除方法
- 避免NullPointerException异常的几种常用方法
- SQL日期和时间函数
- Builder,Adapter,Decorator,Bridge 模式
- HID to promote the development of materials