关于ORACLE和SQL SERVER中不同SQL语句的大讨论,欢迎参加。

OpenVMS 2002-09-13 05:10:58
加精
关于ORACLE和SQL SERVER中不同SQL语句(语法、作用、限制),目前还没有看到有书上有完整的描述,你在使用过程中,发现他们的有哪些不同了吗?
不求全面,欢迎讨论。
...全文
603 69 打赏 收藏 转发到动态 举报
写回复
用AI写文章
69 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDNM 2002-10-09
  • 打赏
  • 举报
回复
这么好的贴,OpenVMS (半知半解) 兄怎么不自己放到精华区去?
我代劳了!
acev 2002-10-08
  • 打赏
  • 举报
回复
xxj() 说得好。真是个精通这两种系统的高手呀!
OpenVMS 2002-10-08
  • 打赏
  • 举报
回复
请xxj()去领分
http://expert.csdn.net/expert/topic/1077/1077614.xml?temp=.6402857
cxmcxm 2002-10-05
  • 打赏
  • 举报
回复
非常感谢OpenVMS(半知半解).
cxmcxm 2002-10-03
  • 打赏
  • 举报
回复
如何将此帖保存,用另存为保存后打不开,请指点?
baresi 2002-10-03
  • 打赏
  • 举报
回复
up
shuchang0626 2002-10-03
  • 打赏
  • 举报
回复
学习
OpenVMS 2002-10-03
  • 打赏
  • 举报
回复
to: cxmcxm(小陈),see help in csdn,need download some file to support expolrer offline
badtank 2002-10-02
  • 打赏
  • 举报
回复
多谢指点,你说的方式也可以。不过,在oracle版中也有讨论这个问题的贴子,nb人物们都指点说最好用函数来搞定。
两个数据库,两个模式,你学会了,习惯了一个模式了,再接触另外一个,旧的思维总是在干扰。怪不得萧秋水要去练什么忘情天书,今天终于有一点点理解了。 :)
net_steven 2002-09-30
  • 打赏
  • 举报
回复
xxj()都说到要害处了,鼓掌!
alandd 2002-09-30
  • 打赏
  • 举报
回复
badtank(爱与宿命的连发枪) 兄关于两者存储过程的观点是错误的:
其实
SQL SERVER 和 ORACLE 中的存储过程都是有返回值的只是有点差别:
1。两者都支持将参数定义为返回且ORACLE 只能这样返回
2。SQL SERVER 支持用 SELECT 语法返回结果集,而ORACLE 是不支持的
3。在ORACLE 中如果要返回多条记录的结果集,则要给存储过程的参数中增加一类型为游标类型的返回参数
另:
1.T_SQL 的语法相对要简单很多,特别是在对时间的处理上,和对CASE 语句的处理上(PL_SQL 是 DECODE)
2.PL_SQL 里没有取得随机数的函数
3。PL_SQL 游标要比T_SQL 里要灵活
3。PL_SQL 存储过程比T_SQL 的执行速度要快
OpenVMS 2002-09-29
  • 打赏
  • 举报
回复
补充:另外开贴给分!
OpenVMS 2002-09-29
  • 打赏
  • 举报
回复
谢谢 xxj() 兄,总结完了就结帐!
东土 2002-09-28
  • 打赏
  • 举报
回复
学习
长进不少
xxj 2002-09-28
  • 打赏
  • 举报
回复
12、关于存储过程或函数中使用的临时表,两者都提供了这个功能
临时表,最主要的好处是,操作不留任何痕迹、不产生日志,
所以速度快
·MS SQL SERVER
CREATE TABLE #表名称(........) 或者 SELECT 字段表达式列表 INTO #表名称 FROM
表名称前加#即可,这些临时表都是只在一个数据库连接会话期间有效

·Oracle
create [Global] Temporary Table ,加上[Global]就是全局的临时表(所有数据库连接会话都是可见的),
不则为私有的(在一个数据库连接会话期间有效)

13、两者都提供了自己的桌面版的数据库
·MS SQL SERVER 毋庸我多说了
基本上桌面版的数据库提供的功能跟服务器版的功能没多大区别
缺少的全文搜索服务功能
·Oracle
Oracle Lite 8,我就看过人家用Oracle lite 8做过海关报关系统
补充:Sybase 提供了桌面版的Sybase SQL anywhere
14、动态执行SQL语句
·MS SQL SERVER 7.0好象没有这个功能,MS SQL SERVER 2000已经这个功能。
你是不是想在存储过程的参数中传递一个表名或者在过程体里动态
生成一个SQL语句,你会发现很难办到。看了下面的例子:你以前的问题全解决了
declare @count int
declare @SQL nvarchar(200)
set @SQL = N'select count(*) from sysobjects'
exec sp_executesql @SQL,N'@i int output',@count output


·Oracle提供了两种方法实现这个功能
①程序包DBMS_SQL,执行一个语句的过程:
打开游标(open_cursor,对于非查询语句,无此过程)
分析语句(Parse)
绑定变量(bind_variable)
执行语句(execute)
关闭游标(close_cursor,对于非查询语句,无此过程)
②execute immediate ls_SQL

15、数据库备份和恢复
两者都提供了很强的数据库的备份和恢复能力,Oracle提供了更多的手段,
Orace宣称她的数据库是不可摧毁的也不是瞎吹牛
·MS SQL SERVER
①数据库的倒入倒出DTS工具,如果数据源和目的都是MS SQL SERVER则可以完全复制数库的结构
(包括表、视图、索引、触发子、规则、默认、存储过程、用户定义函数、表数据)
②数据库备份和恢复命令
backup database
restore database
倒出的数据文件还可以压缩的,这一点不同于Sybase
而且这种数据库备份和恢复的方式可以是增量的和完全的

③数据库的附加Attach
只要数据库的原始数据和日志文件没有损坏,就可以
命令:SP_ATTACH_DB
这种情况,有时候会出问题:比方说你键了登陆帐号,不是使用缺省的登陆帐号sa,
由于登陆帐号的信息存放在master数据库中,所以你使用原来建立的帐号就登陆不上,
所以要做一些后补工作

·Oracle
①倒出倒入工具exp和imp工具
倒入倒出的参数何其多
②冷备份或者称脱机备份,备份的时候数据库是停止的
备份所有的数据文件、日志文件、控制文件
③热备份或者联机备份
数据库处在ARCHIVELOG模式,注意缺省情况下都是ARCHIVELOG
恢复时可以选择完全恢复、时间点恢复、SCN点恢复、用户自由干预的CANCEL恢复
可以说他的热备份的恢复功能是非常之强大的
④RMAN恢复管理器,本人正在研究中,不好乱说
lizongqi 2002-09-27
  • 打赏
  • 举报
回复
up
Jiemi 2002-09-27
  • 打赏
  • 举报
回复
up
s_gao 2002-09-26
  • 打赏
  • 举报
回复
我说一句Oracle有Sequence
而SQLServer没有
K1933 2002-09-25
  • 打赏
  • 举报
回复
真的想不明白为什么国人出的书出错率那么高。。。。真是可怜。
hoodle 2002-09-25
  • 打赏
  • 举报
回复
关于limit的不同
在oracle中可以
select * from table where... limit int,int
limit直接挂在后面很方便,但是SQLSERVER不支持LIMIT,很是郁闷

select top 3 * from tablename where key not in (select top 10 key from tablename)这种代替,实在是不方便
加载更多回复(49)

34,873

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧