随笔分类 -  数据库

ORACLE纯SQL实现多行合并一行
摘要:项目中遇到一个需求,需要将多行合并为一行。 网上查了很多方法,但通常而言都是编写自定义多行文本合并函数,或者对支持的列数具有局限性。 最后在英文google中搜到如下比较巧的方法。不用在数据库中增加function,纯SQL一次性搞定, 而且扩充性很好,没有列的限制。…… 阅读全文
posted @ 2009-07-30 22:15 网际浪人 阅读(52830) 评论(15) 推荐(7)
一种在SQLServer中实现Sequence的高效方法
摘要:如果在ORACLE里面用惯了Sequence的兄弟们,要在SqlServer里实现Sequence,就会发现没有现成的Sequence对象可以Create了。那应该怎么办呢? 当然这点小问题是难不倒我们程序员的,“max+1啊”,有人会说这样的方式。是的,这种方式实现起来也比较简单。当然你也许还会说,最Sql的方式是采用identity列,自增的方式去增加就ok了。但是这样的列如果要实现“YYYYMMDD”+Sequence值 (例如:2008072400001)的格式就不行了。还是老老实实用存储过程来取得一个Sequence值吧,使用起来也就随心所欲了。 网上常见的一个存储过程为 为当前库所有用到Sequence建一张表,譬如“AllSequence”,内含四个字段【名字,起点值,递增值,当前值】,创建Sequence的时候就创建一条记录,获取Sequence的时候就从对应行的当前值按递增值增加得到。 在并发性请求不那么高的系统里,这种过程是没有问题的。但是并发性请求一旦处于某个量级以后,这个过程常常会遇到问题。 应该以下为一个改 阅读全文
posted @ 2008-07-24 20:22 网际浪人 阅读(18294) 评论(3) 推荐(2)
oledb使用Access更新和插入操作的注意点
摘要:一、更新: 常会遇到 OleDbException - "标准表达式中数据类型不匹配。" 使用 OleDb 向 Access (.mdb) 插入 DateTime 数据时经常触发该异常。 解决办法: parameter.OleDbType = OleDbType.Date; 不要使用 DbDate, DbTime, DbTimeStamp。 二、插入: 常会遇到 Insert into 语句不合法 解决办法: 字段名加上[] 。例如:Insert into T1 ( [p1],[p2] ) …… 阅读全文
posted @ 2008-06-27 14:41 网际浪人 阅读(1645) 评论(1) 推荐(0)
[转]SQL Server 2005链接字符串
摘要:以下列出的是SqlServer2005在编程过程中的链接字符串,可用于C++,VC++,ASP,PHP,.NET等等语言中。 SQL Native Client ODBC Driver …… 阅读全文
posted @ 2008-05-16 15:49 网际浪人 阅读(1962) 评论(0) 推荐(0)
oracle关联更新
摘要:update某个表时,如果需要和其他表关联,这样的SQL语句在ORACLE中实现起来比较呕心。各个where条件需要分别与一堆select语句嵌套使用才可,晕~~。示例sql如下…… 阅读全文
posted @ 2007-12-15 00:23 网际浪人 阅读(936) 评论(0) 推荐(0)
ORACLE中文字段排序
摘要:做一个2个数据库间数据比较工具时遇到ORACLE中汉字排序的问题。 使用一下SQL select * from T_0303003 order by stock_holder 进行选取数据时(stock_holder为存放中文的字段),结果发现两库返回的记录顺序不一致。琢磨之后应该为字符集问题,一个库字符集为系统默认字符集,另一个库为UTF-8字符集。查找资料后发现,对于中文字段的排序,应该使用以下方式…… 阅读全文
posted @ 2007-11-22 10:21 网际浪人 阅读(3355) 评论(0) 推荐(0)
Provider Oracle for OLE DB的不稳定性
摘要: 昨天受令用VBA做个工具,查看我们项目数据库中某些分析结果表的数据,当然要结合主表之类的形式展现出来。 数据库为ORACLE 9i,因此选用了ADO方式,访问提供器采用了安装ORACLE客户端后自带的Provider Oracle for OLEDB。 刚开始几个表查询数据库数量较少,处理也简单,倒也没什么问题。可是在进行几个大数据量表查询时,总是出现突然关闭EXCEL,或者莫名其妙的问题。最初怀疑是自己程序的问题,断点跟踪后,也看不出个究竟,不过总是在执行查询结果集的时候出现问题。而且问题的出现是偶然、报错内容也有好几样。 实在被它打败了。午饭后,脑筋要活跃一些,想到换一下访问提供器。改为Microsof OLE DB For Oracle.程序其他保持不变。测试n次,没有出现任何异常。:-) 终于搞定了。 怀疑Provider Oracle for OLE DB与微软某些产品的兼容性不够好,例如EXCEL。以后VBA中使用数据库链接时,需考虑这个问题。顺便给大家提个醒。 阅读全文
posted @ 2007-11-07 17:03 网际浪人 阅读(2811) 评论(0) 推荐(0)
(ORACLE 10g)"未在本地计算机注册“OraOLEDB.Oracle.1”提供程序"问题解决
摘要:现象: C#程序中需要以Provider=OraOLEDB.Oracle.1方式访问ORACLE数据库。但程序执行时报异常:未在本地计算机注册“OraOLEDB.Oracle.1”提供程序 解决: 服务器ORACLE为10g,虽然安装时选择了Oracle Data Provider for .net 和Oracle Provider for OLE DB。但是还是需要人工命令行注册一下 regsvr32 D:\oracle\10.2.0\db\BIN\OraOLEDB10.dll 原因分析: 也许是因为ORACLE 10g下的dll名字发生了变化。以前叫OraOLEDB.dll 阅读全文
posted @ 2007-09-27 11:43 网际浪人 阅读(11246) 评论(2) 推荐(0)
(ORACLE)ROWNUM方式与MAX方式在获取最新数据时的效率比较
摘要:下午检查一段SQL时,发现获取最新数据时,可以采用两种方式的SQL写法:1、取记录后按日期逆序后取ROWNUM=1,2、对表的日期取MAX,再和原表关联,取出最大日期对应的数据。为了验证效率,做了以下实验。 阅读全文
posted @ 2007-09-17 18:40 网际浪人 阅读(6137) 评论(3) 推荐(0)
ORACLE中LONG类型字段的存取
摘要:ORACLE中存取4000字节以上大文本类型可以用此数据类型,其在C#中的读写方法如下:注意需要引用 System.Data.OracleClient然后添加命名空间:using System.Data.OracleClientORALCE建库脚本: CREATE TABLE TEST ( AGREEMENT_ID CHAR(3) NOT NULL, AGREEMENT_CO... 阅读全文
posted @ 2006-12-28 23:03 网际浪人 阅读(8487) 评论(5) 推荐(1)
SQLServer和Oracle的常用函数对比
摘要:SQLServer和Oracle的常用函数对比 ---------数学函数 1.绝对值 S:select abs(-1) value O:select abs(-1) value from dual 2.取整(大) S:select ceiling(-1.001) value O:select ceil(-1.001) value from dual 3.... 阅读全文
posted @ 2006-01-04 21:38 网际浪人 阅读(346) 评论(0) 推荐(0)