sql server 2005 使用备忘
来源:互联网 发布:哪个牌子手机网络好 编辑:程序博客网 时间:2024/06/01 07:55
最近做一次数据迁移, 目标数据库是sql server 2005, sql server 有几年没使用了.
一. oracle 很多时候是一个数据库建一个数据库实例, 多个用户. sql server 2005 是一个数据库, 多个数据库实例, 多个用户. 所以执行的脚本最好加上 use tempNews --tempNews 是数据库实例.
二. oracle 的执行语句是通过分号 ";" 在分开的, 而 mssql 是用 "go" , 还有点不同, "go" 必须是独自一行, 而分号不需要. 但是在存储过程里面, 不管是oracle 还是 mssql 都是通过分号 ";" 分开执行语句的.
三. oracle 的字符串连接符是两竖线 "||", mssql 是加号 "+".
四. oracle 的guid 是通过 sys_guid() 产生, 类型是32位的字符串, 而 mssql 2005 的guid 是通过 newId(), 有个专门的类型uniqueidentifier;
还有一点需要注意, oracle 的guid 是没有中横线 "-" 如asd23a3sda3sd..... , mssql 2005 有中横线, 如 asd23a3s-da3sd....
五. mssql 2005 增加了字符大字段类型varchar(max) , 用于替换以前的大字段类型text, 都是只能存2G 以内的字符数据.
oracle 的 Long 类型(一个表只能有一个Long 类型字段)也是存2G 以内的字符数据, 但是 Clob 能存4G 以内的字符数据, 所以从Clob 转为 text, 超出的数据丢失的情况将不可以避免.
注意, oracle 是可以用to_char() 方法把clob 转换为字符串的, 所以把带Clob 字段的表数据导出为 insert 语句脚本是可以的, 说来惭愧呢, 这是用客户端工具toad 的导出表的功能时候注意到的.
六. 下面写的是一些存储过程的不同的地方(没有涉及异常方面)
1. oracle 创建存储过程可以用 create or replace, 但是 mssql 不行, 第一次创建用 create, 修改用 alter.
2. oracle 的存储过程的简单结构是:
create or replace procedure 存储过程名称 ( 参数,.... )
as --is 也可以
变量A;........... --变量可以赋予默认值
begin
--select a into 变量A from tableA;
--变量A := 0;
代码
end;
mssql 的存储过程的简单结构是:
create procedure 存储过程名称 @参数,......... --注意, 这里没有括号
as
begin
--declare @变量A;........ --变量不可以赋予默认值, 类似于声明
--set @变量A = 0; --初始化变量A, 如果使用未初始化的变量, 将会产生错误
--select @变量A= a from tableA; --初始化变量A的另一种方法.
代码
end
3. oracle 的存储过程的参数是用 括号 包围起来的, 但是 mssql 是没有括号包围的. 虽然都是用 exec 来执行存储过程的, 但是oracle 就只有 exec 存储过程名称(实参1, ....) 这样的方式, 而 mssql 的参数传递可以有多个方式, 这可能就是有没括号的区别了.
4. 在oracle 的存储过程里面, 执行其他存储过程, 你只需要写上, "其他存储过程名称(实参1,.....);", 而在 mssql 就要写 "exec 其他存储过程名称 实参1,.....;".
5. oracle 的存储过程的变量是在, as 和 begin 中间定义的, 可以赋予默认值. mssql 的存储过程的变量是在begin 和 end 中间声明的, 声明的时候不能赋予默认值.
6. oracle 的存储过程变量赋值可以用 "变量A := 0;" 或者 "select a into 变量A from tableA;", 而mssql 的变量赋值是用 "set @变量A = 0;" 或者 "select @变量A = a from tableA".
7. mssql 的游标的使用方法一:
declare cr_cursor cursor for select 语句; --1.定义游标
open cr_cursor --2.打开游标
fetch From cr_cursor into @paraId --3.提取游标
WHILE @@fetch_status=0
BEGIN
代码........;
fetch next From cr_cursor into @paraId
END;
close cr_cursor --4.关闭游标
deallocate cr_cursor --5.释放游标
8. mssql 打印信息到窗口很方便呢, 用 "print 字符串" 就行了. 遇到输出的变量非字符串的, 用CONVERT 转换就行了, 对于uniqueidentifier 类型, CONVERT(varchar(40),@uniqueidentifierPara,40) 第三个参数不能少.
9. 如果字符串中有中文
N'中文'
以 N 前缀标记指定该字符串为 Unicode 字符串, 这个让人想到了C++ 的 L'中文', 宽字符.
- sql server 2005 使用备忘
- SQL SERVER 2005 递归查询备忘
- sql server 常用函数备忘
- PL/SQL使用备忘
- SQL Server 2005使用
- sql server表结构处理备忘
- oracle、SQL Server、Mysql分页语句备忘
- oracle、SQL Server、Mysql分页语句备忘
- oracle、SQL Server、Mysql分页语句备忘
- SQL SERVER中一些语句备忘
- SQL SERVER 2005使用入门
- SQL Server 2005 使用心得
- SQL SERVER 2005使用入门
- SQL Server 2005 函数使用
- CTE使用[SQL server 2005]
- SQL Server 2005 使用Transaction
- sql server查询SQL备忘(1)- group by all
- sql server查询SQL备忘(2)- cross join
- (Fw)How to be crash-free
- 第一次发布ASP.NET程序所遇到的坎坷
- 在没安装jdk的机器执行java程序
- (转)Ubunt linux下安装AIR
- 经典SQL语句大全(基础)一
- sql server 2005 使用备忘
- Sql 中对字符串的处理大全
- 经典SQL语句大全(提升)二
- wd
- oracle 建表 造数据 存储过程 创建数据库的远程连接 以及一列的多行合并
- Purebasic遍历文件夹内所有文件
- C++编码中减少内存缺陷的方法和工具
- 经典SQL语句大全(提升)二
- Android onItemLongClick+onCreateContextMenu setOnCreateContextMenuListener实现长按ListItem弹出不同菜单