« | August 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | | | | | |
| 公告 |
戒除浮躁,读好书,交益友 |
Blog信息 |
blog名称:邢红瑞的blog 日志总数:523 评论数量:1142 留言数量:0 访问次数:9691737 建立时间:2004年12月20日 |

| |
[数据库]sqlserver中top n的尴尬 原创空间, 软件技术
邢红瑞 发表于 2005/8/31 12:59:30 |
不知道sysbabse和ms的高手怎末想出这末个东西,select top 10 * from user 检索用户表的前10个数据, 这给数据库的开发者带来很大的麻烦,根据sql92标准中会将'100'当作100来处理 所以一切都用字符就可以了,但是 select top '10' from user 是不行的,那末你会想使用预处理可以解决这个问题,对不起select top ? from user 肯定不支持. 如果不出现这个问题,数据库底层的开发者就不用考虑参数是数值还是字符的问题了,一切作为字符处理就OK了. 这点远不如oracle和mysql,oracle复杂一些,必须用sql嵌套,select RTS.* from (select * from user ) RTS where rownum <10, mysql就简单了,select * from user limit 10,mysql和oracle都可以用预处理, 它产生的直接后果就是sqlserver的数据库分页极其复杂,而且不能用预处理,降低了jdbc对数据库的检索 |
|
[数据库]SQLServer和Oracle的常用函数对比 文章收藏, 网上资源, 软件技术
邢红瑞 发表于 2005/8/31 11:40:38 |
---------数学函数
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.取整(小) S:select floor(-1.001) value O:select floor(-1.001) value from dual
4.取整(截取) S:select cast(-1.002 as int) value O:select trunc(-1.002) value from dual
5.四舍五入 S:select round(1.23456,4) value 1.23460 O:select round(1.23456,4) value from d |
|
[数据库]M$的JDBC驱动的bug 原创空间, 软件技术
邢红瑞 发表于 2005/8/20 15:20:17 |
在企业应用中,很少有人用微软的jdbc驱动,这个驱动运行一段时间,没有数据请求时,自动把connection关闭,无论在windows还是linux上。
在一次旧的系统改造中,系统报告了[Microsoft][SQLServer JDBC Driver]ResultSet can not re-read row data for column 10的错误。 为了解决这个问题,开始跟踪程序,就差没有跟踪M$的JDBC源码了,也没有查出原因。只知道在在rs.getString("bkname")的时候,肯定会出现错误。 下面的代码 建表 CREATE TABLE [book] ( [bkid] int NOT NULL, [bkname] nvarchar(200) COLLATE Chinese_PRC_CI_AS NOT NULL, [bkintroduction] ntext COLLATE Chinese_PRC_CI_ |
|
[数据库]MSSQL7中吓人一身冷汗的BUG 文章收藏
邢红瑞 发表于 2005/8/3 12:58:49 |
在MSSQL7.0中用查询分析器选择NorthWind数据库,复制粘贴下面的一条语句执行:
update Orders set CustomerID='HANAR',EmployeeID=4 where OrderID='10250'
看看执行结果,也许你会吓出一身冷汗!!! 因为执行结果是修改了830行记录,这830行记录的CustomerID字段都改成了'HANAR'。
为什么呢? 大家注意上面那条语句中间的逗号,那不是一个简单的逗号,而是一个中文的逗号。 就是这个致命的中文逗号,导致了从逗号以后的语句全被忽略,而且执行并未报错。 (用Delphi等开发工具编制数据库程序,一样会碰到这个问题) 实际执行的语句就变成了 update Orders set CustomerID='HANAR'
所以在使用MSSQL7.0的朋友一定要特别注意了,不然这个BUG导致的错误一定会让你欲哭无泪! 『注:此BUG只在 MSSQL 7.0 版本中存在,MSS |
|
[数据库]java读取oracle的存储过程 原创空间
邢红瑞 发表于 2005/4/16 19:05:36 |
java读取oracle的存储过程网上的例子不少,都太简单,没有一个返回参考游标的,返回记录集,自己写一个怕日后忘了。
oracle的PLSQL
CREATE OR REPLACE package chapter_13 as TYPE rs IS REF CURSOR ; procedure founder(oFields out rs);
end;
CREATE OR REPLACE package body chapter_13 as
PROCEDURE founder(oFields out rs) IS BEGIN open oFields for select * from person; END founder; end; java代码
package jdbc;
import java.io.*; import java.sql.*; imp |
|
|