标签存档: Sybase

Sybase SQL中where子句与group by连用时的困惑

sybase where group by在SQL中,对于select语句里的where子句和group by子句的连用,一般原则应该是先执行where条件过滤,再用group by子句的条件来分组。然而Sybase却有所不同,比如select * from test1 where aa=’1′ group by bb,这是一条简单的分组语句,执行的结果却让人大跌眼镜。好象是where条件根本没有生效一样。查了Sybase文档,才明白问题之所在。现将该节翻译如下:

继续阅读 »

Java调用Sybase存储过程

java sybase jdbc jconnectSybase数据库有官方的jConnect驱动,也有开源驱动jTDS。jConnect常用的有4.5/5.5/6/7等版本,比如网上常见的jconnect3.jar这个文件就对应于jConnect的版本6。而开源驱动jTDS不仅用于Sybase,还可用于ms sqlserver,从中也可看出这两家数据库产品的历史渊源。只是今天看来,Sybase已经日趋没落了。一般企业应用开发,估计会更偏好官方驱动吧?下面是个Java用jConnect驱动连接Sybase并调用Sybase存储过程的例子:

继续阅读 »

Sybase中判断一个串是否为纯数字

sybase isnumeric在为数据库开发存储过程时,经常需要判断一个字符串是不是纯数字,这样才能安全的进行数据类型转换。但是作为老牌数据库厂商的Sybase,却没有一个直观方便的函数来实现对应功能。而微软的Sql Server和Oracle,都提供有isnumeric等函数。曾经拥有过PowerBuilder、PowerDesigner等著名产品的Sybase,终于沦落成SAP的子公司,是不是也跟它这种傲娇的态度有关系呢?

继续阅读 »

Sybase12.5在winxp下的安装,配置及更改字符集

sybase 字符集数据库产品在金融行业一般都有较长的生命期。因为以安全稳定为第一要求的金融行业不可能频繁的更换数据产品,导致一些产品的使用周期长达10年以上。Sybase12.5于2001年发布,现在仍在一些银行广泛使用。由于发布时windows xp还未推出,导致在xp上安装Sybase及字符集设置时出现一些问题。当然xp系统不可能做为生产数据服务端使用,但在作为测试环境或备份数据,历史查询系统的数据存储服务器时仍有使用价值。

继续阅读 »

Sybase事务中的锁

sybase 事务 锁事务和锁无疑是数据库中比较复杂的部份,做个简单的测试看看默认状态下Sybase的事务语句的锁效果。 一个表A,三种操作select /insert/update 在事务开始后,结束之前 insert和update,都将导致表被锁定,即使此语句已经执行完也不会释放。测试中在另外一窗口中的insert语句会长时间等待,直到这边的事务提交完毕。

继续阅读 »

Sybase指定字段别名的三种格式

sybase 别名sql语句中对数据库中的表和字段均可指定别名,适当的使用字段别名,可以使sql语句更简明易读,比如为计算列指定有意义的别名。也可以避免复杂的多表查询中出现相同名称的列时发生的冲突。还可以用在查询结果列名需要本地化的场合。这里不讨论表的别名,我们看下Sybase的sql语句中指定字段别名的三种方式,有兴趣的话还可以跟微软的MS sqlserver中的别名用法做一些有趣的对比。

继续阅读 »

Sybase数据库游标使用中的两个错误

sybase 游标在Interactive sql中执行一段游标语句时,报出下述错误:declare cursor must be the only statement in a query batch。根据错误提示,尝试把declare cursor语句之后加上go,再执行这些语句就没有问题了。 另一个有趣的现象就是这段游标要测试的问题。declare ttt cursor for select top 10 aa from #bb这个游标定义。似乎总是只能执行9条,若top 3的话,则只能执行2条,为何有这种现象,不解,回头再找原因。

Sybase中清除数据库日志的命令dump tran

sybase  dump tran在Sybase中,dump database是备份数据库的命令,相应的dump transcation命令通常用于备份日志,但更常用于清除日志(不作备份)。以下的两条命令是dump tran清除日志的两个例子,稍有区别。但都只用于清除日志的不活动部份,所有已经提交或回退的日志,都属于不活动的日志,而最近的未提交的日志就是活动部份。而若有事务正在运行,则执行以下命令可能会报错:

继续阅读 »

Sybase中父过程与子过程中临时表的作用域测试

sybase 临时表Sybase的临时表是一个存放在系统库tempdb中的表对象。表名前加上#号,就表示你创建的是一个临时表。在执行一些复杂查询的时候,临时表能够作为临时数据存储中间结果,从而简化查询的复杂度,适当的使用临时表还能大大提高查询效率。临时表通常只对创见者可见,虽然鼓励用户在结束之前清理临时表,但系统仍会对临时表进行管理,并在用户退出时自动删除仍存在的临时表。

继续阅读 »

数据库的临时表

sybase 临时表临时表有本地临时表和全局临时表之分,#起头的是本地临时表,##起头的是全局临时表,全局临时表创建后对所有用户是可见的。本地临时表在创建用户或用户进程断开(或所在存储过程结束后将自动清除),而全局临时表只有在访问它的所有用户或用户进程结束后才会清除。对于存储过程而言,本地临时表在存储过程执行完后就自动清除,即子过程中的临时表对调用它的父过程而言也是不可见的。

继续阅读 »

第 1 页,共 3 页123