sql zhuan ORACLE
DbType OracleType
SqlDatabase OracleDatabase
SqlParam.cs
SqlServerHelper.cs
InsertByHashtableReturnPkVal
sql as oracle 无
public DataTable GetPageList(string sql, SqlParam[] param, string orderField, string orderType, int pageIndex, int pageSize, ref int count)
{
StringBuilder sb = new StringBuilder();
DataTable result;
try
{
int num = (pageIndex - 1) * pageSize;
int num2 = pageIndex * pageSize;
sb.Append("Select * From (Select ROW_NUMBER() Over (Order By " + orderField + " " + orderType);
sb.Append(string.Concat(new object[]
{
") As rowNum, * From (",
sql,
") As T ) As N Where rowNum > ",
num,
" And rowNum <= ",
num2
}));
count = Convert.ToInt32(this.GetObjectValue(new StringBuilder("Select Count(1) From (" + sql + ") t"), param));
result = this.GetDataTableBySQL(sb, param);
}
catch (Exception e)
{
this.Logger.WriteLog(string.Concat(new string[]
{
"-----------数据分页(Oracle)-----------\r\n",
sb.ToString(),
"\r\n",
e.Message,
"\r\n"
}));
result = null;
}
return result;
}
SqlServer转Oracle时代码注意事项
| 1 |
Oracle:nvl SqlServer:isnull |
| 2 |
insert,update,delete等用分号隔开的sql语句,必须前加begin,后加commit;end;并且去掉中间所有的\r\n。 select时,一个sql语句中不能包含多个select语句 /// <summary> |
| 3 | 当数据类型为nvarchar2时,最好前面加N,例如insert into a(nvarchar2field) values(N'中文'),查询时where子句也如此,例如where name = N'张三' |
| 4 | sql语句中的+,改为|| |
| 5 |
Oracle中,在sql中做除法时,需要进行以下操作,否则c#中会算术溢出 round(count(*)/(cast(3 as float)), 28) --cast(3 as float)是为了和sqlserver保持一致,28是最大精度,不能大于28 |
| 6 |
日期在SqlServer中可以按照字符串操作,但在Oracle中不行 --Oracle中插入时也必须做如下转换 Oracle:to_date('2010-12-21 12:02:30','YYYY-MM-DD HH24:MI:SS') --SqlServer插入或者where子句中都可以直接使用字符串,但where子句中使用字符串,会加快查询速度 SqlServer:convert(datetime,''2010-12-21 12:02:30') |
| 7 |
想要保存一个时间的毫秒数,Oracle中的字段类型必须为timestamp,不能为date,因为date只保存时间值到秒。 --Oracle中插入时也必须做如下转换 Oracle:to_timestamp('2010-12-21 12:02:30.230940','YYYY-MM-DD HH24:MI:SS.FF') --SqlServer插入或者where子句中都可以直接使用字符串,但where子句中使用字符串,会加快查询速度 SqlServer:Convert(datetime,'2010-12-21 12:02:30.230940') |
| 8 |
sql中日期想减得到秒的方法 Oracle: CAST((sysdate- to_date('2010-12-21 12:02:30','YYYY-MM-DD HH24:MI:SS'))*24*60*60 as float) SqlServer:CONVERT(float, datediff(second, to_date('2010-12-21 12:02:30','YYYY-MM-DD HH24:MI:SS'), getdate())) |
| 9 |
Oracle中字段不允许存入'',即空字符串,只有null值,所以where子句中判断空值方法为: Oracle:字段名 is null SqlServer:(字段名 is null or 字段名 = '') 判断不为空值的方法 Oracle:字段名 is not null SqlServer:(字段名 is not null and 字段名 != '') |
| 10 |
Oracle中Top N的写法: --注意:Order by要写在子查询里,rownum是从1开始的 select * from
( select * from c_itcomp order by d_controladderss ) where rownum <100 排序后从第4条记录取至第9条记录
select * from
( select rownum as num, t.* from ( select a.* from a order by b ) t ) where num > 3 and num < 10 |
|
11 |
Oracle中,给表定义别名的时候不能加as 例如:select * from 表名 as 别名!!!!注意,这是错误的,正确的应该是 select * from 表名 别名 |
|
12 |
Oracle中,字段的别名不能加单引号 例如:select 字段名 as '别名' from dual!!!!注意,这是错误的,正确的应该是 select 字段名 as 别名 from dual |
|
13 |
Oracle中没有select sysdate as nowDate的写法,正确的应该是加个虚表dual select sysdate as nowDate from dual |
|
14 |
Oracle中,字段名,表名,别名,索引名,视图名等名称的长度不能超过30个字符 |
|
15 |
Oracle中,字段名都是大写的,即使select语句中是小写,得到的结果也是大写。因此,select到DataTable中后,binding到wpf时如果大小写不同,会绑定失败。在DataTable中分组和排序,也会失败。因此,尽量将DataTable中的字段名称改为大写。 |
|
16 |
Oracle中的Integer类型,在C#中是Decimal,因此,在C#中从DataTable取值进行类型转换时: 若要转成Int类型,需使用Convert.ToInt32,而不能使用(int),否则会报错 若要转成Bool类型,需使用Convert.ToBoolean,而不能使用(bool),否则会报错 |
sql zhuan ORACLE的更多相关文章
- 【SQL】Oracle分页查询的三种方法
[SQL]Oracle分页查询的三种方法 采用伪列 rownum 查询前10条记录 ? 1 2 3 4 5 6 7 8 9 10 11 [sql] select * from t_user t whe ...
- 历尽磨难之PL/SQL链接Oracle数据库
说起来都是泪啊,上司布置的任务需要远程连接Oracle数据库,说实话这又是我人生中的第一次.我听到以后觉得不是什么大问题,然而我错了..错的很厉害! 我搞了一天一夜才弄好,这里面原因有很多,大体来讲还 ...
- General Ledger Useful SQL Scripts – Oracle Applications 11i
General Ledger Useful SQL Scripts – Oracle Applications 11i Contents GL Set of Books Configuration O ...
- PL/SQL在Oracle服务器上连接出错
今天在Oracle服务器上使用PL/SQL连接Oracle软件的时候出现了错误,错误如下: 具体的解决办法如下: 需要下载32位的Oracle Client,具体的步骤如下:登录Oracle官方网站 ...
- SQL优化(Oracle)
(转)SQL优化原则 一.问题的提出 在应用系统开发初期.因为开发数据库数据比較少.对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,可是假设将应用系统提交实际应用后,随着数 ...
- MS SQL到Oracle的数据迁移笔记
MS SQL到Oracle的数据迁移笔记 一.任务背景 旧系统使用MS SQL Server数据库,新系统使用Oracle数据库,现在需要将旧系统中的数据迁移到新系统中,旧数据按照约定的规则转换后,能 ...
- SQL Server,Oracle,DB2索引建立语句的对比
原文引至:http://jvortex.blog.163.com/blog/static/16961890020122141010878/ 我们知道,索引是用于加速数据库查询的数据库对象.原理就是减少 ...
- PL/SQL连接oracle数据库
PL/SQL连接oracle数据库 1.简单介绍 在不安装oracle数据库的情况下使用pl/sql连接远程oracle数据库. 2.详细步骤: a) 安装PL/SQL.依据自己的操作系统安 ...
- Sql for Oracle基本操作关键字
Sql for Oracle基本操作关键字 +SQL TOP子句 TOP 子句用于规定要返回的记录的数目 SELECT column_name(s) FROM table_name WHERE ROW ...
随机推荐
- ML: 聚类算法R包-网格聚类
网格聚类算法 optpart::clique optpart::clique CLIQUE(Clustering In QUEst)是一种简单的基于网格的聚类方法,用于发现子空间中基于密度的簇.CLI ...
- 在同一台电脑安装python 2 和3,并且怎样安装各自的pip和模块
安装python2.7 和 3.6不冲突直接安装就行 安装pip 访问https://pip.pypa.io/en/stable/installing/获取地址 curl https://bootst ...
- CentOS 7.4 初次手记:第一章 Linux守护进程(daemon)
第一节 init & sysvinit 6 I sysvinit 运行顺序... 6 II Sysvinit和系统关闭... 7 III Sysvinit 的小结... 7 IV 运行级别.. ...
- 恢复word中审阅选项卡
碰到在Word中,使用自定义功能区添加审阅选项卡,仍然不显示审阅选项卡 二个办法: 1.检查COM加载项,找出并从此禁用,如:iWebOffice2009.ocx 2.创建自定选项卡“审阅(自定义)” ...
- 黄聪:C# webBrowser控件禁用alert,confirm之类的弹窗解决方案
同样的代码,我尝试了很多次都没有成功.最后终于成功了,是因为我没有在正确的事件里面调用这段代码. private void InjectAlertBlocker() { HtmlElement hea ...
- <亲测>ubuntu 16.04 忘记root密码
ubuntu 16.04 忘记root密码 阅读目录 方法一 方法二 虚拟机中安装的ubuntu 16.04. 回到目录 方法一 如果用户具有sudo权限,那么直接可以运行如下命令: sudo s ...
- [蓝桥杯]ALGO-15.算法训练_旅行家的预算
问题描述 一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的).给定两个城市之间的距离D1.汽车油箱的容量C(以升为单位).每升汽油能行驶的距离D2.出发点每升汽油价格P和沿 ...
- 知识点-jar包
JAR文件的全称是Java Archive File,意思就是Java档案文件.通常JAR文件是一种压缩文件,与常见的ZIP压缩文件兼容,同城也被称为JAR包.JAR文件与zip文件的去区别就是在JA ...
- 阿里云服务器 ECS Linux SWAP 配置概要说明
SWAP 简介 Linux 中的 SWAP(交换分区),类似于 Windows 的虚拟内存.系统会把一部分硬盘空间虚拟成内存使用,将系统内非活动内存换页到 SWAP,以提高系统可用内存. 注:参阅 E ...
- python 字符转换记录
1.unicode转utf-8格式: a="unicode格式的字符" a=a.encode("utf-8") 2.utf-8转unicode格式: s2 = ...