• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >sybase > Sybase程序设计中极易造成误解的内部规则

Sybase程序设计中极易造成误解的内部规则

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2017-06-28

匿名通过本文主要向大家介绍了sybase数据库教程,sybase数据库,sybase,sybase官网,sybase powerdesigner等相关知识,希望本文的分享对您有所帮助
</div>

SYBASE数据库是当今在UNIX环境下最为流行的大型数据库之一,本人在SYBASE下开发和维护软件的过程中,发现了一些SYBASE的内部规则,在程序设计中极易造成误解,而达不到预期的目的。下文将本人所发现的几个问题及其解决办法叙述如下:

1、在sybase11.5中,组合两个定长的 char(x)="aaa",char (y)="bbb"; char(x)+char(y)!="aaabbb"

declare @val_1 char(8)
declare @val_2 char(1)
select @val_2 = ’x’
select @val_1 = "0000"
select @var_1= @val_1 + @val_2
select @var_1

我们期望的结果为0000x, 而实际上其结果为0000。

解决方法一:当我们将"select @var_1=@val_1+@val_2",改为"select @var_1=rtrim(@var_1)+@var_2"时,我们便看到了我们所期望的结果。为什么呢?在有的SYBASE版本中存储一个char(n)时,在其真实值后补上了相应数量的空格,在本例中,存储在@var_1中的是0000 (在0000后有四个空格)。你可以加上如下两句来验证:

declare @val3 char(10)
select @val3 = @val_1 + @val_2
select @val3

这时你会得到的结果为0000 x (在0000后有四个空格)。

解决方法二:将char 改为 varchar 也可以达到预期的目的。

2、用alter table 增加表结构时,虽然用sp_recompile tablename 重编译了所影响的数据库对象,但在运行某些包含"select * from tablename"的存储过程时,存储进程仍不认识用alter table 增加的列。例:

1> create table tmp(aa int,bb int)
2> go
1> create table b_tmp(aa int,bb int)
2>go
1> create proc tmpstore
2> as
1> insert b_tmp select * from tmp
2> return
3> go
1> alter table tmp add cc char(8) null
2> go
1> alter table b_tmp add cc char(8) null
2> go
1> sp_recompile tmp
2> go
1>insert tmp values(12,1234,"abcdefg")
2>go
1> exec tmpstore
2> go
1> select * from b_tmp
2> go
aa      bb      cc
----------- ------------- -------------
12      1234     NULL

为什么cc字段是NULL,而不是"abcdefg"? 用alter table 增加表结构后,包含"select * from tablename"的存储过程,用sp_recompile tablename 重编译仍不能使新增的列被存储过程所识别。解决办法只有一个:删了重建。

</div> </div> </div> </div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 实例分析Sybase数据库Varchar类型的排序
  • 解决用jConnect连接Sybase数据库时中文乱码的问题
  • 修改Sybase数据库sa密码的方法
  • Sybase程序设计中极易造成误解的内部规则
  • Sybase修复及sa用户口令恢复
  • 关于sybase数据库的锁
  • Sybase数据库乱码问题的解决方法
  • 精益求精Sybase数据库问题大搜罗
  • Sybase 12.5各版本新功能完全展示
  • Sybase数据库完全接触

相关文章

  • 2017-06-28Sybase海量数据存储、访问及管理简介
  • 2017-06-28如何恢复master数据库
  • 2017-06-28全国电话号码簿数据库系统
  • 2017-06-28数据库用户管理
  • 2017-06-28实例分析Sybase数据库Varchar类型的排序
  • 2017-06-28关于数据库中有numeric数据类型的字段出现跳号的问题
  • 2017-06-28GE Capital保险服务公司
  • 2017-06-28Sybase的临时数据库tempdb
  • 2017-06-28SyBase数据库用户管理的基本概念
  • 2017-06-28Sybase IQ数据仓库领域革命性产品

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • 网络集中管理 提高生产效率--本地网PDH传输设备集中监控系统
    • Sybase和Red Hat宣布联合开发计划 旨在关注客户价值
    • Sybase数据库使用的一则心得
    • 教你学会怎样升级到SQL Anywhere 10(1)
    • 美国洛杉矶时报
    • 在SCOADMIN下的Sybase数据库的完全安装
    • Sybase 365面向全球发布AvantGo for BlackBerry
    • 详细讲述Sybase数据库的安全性控制策略
    • SYBASE数据库用户管理基本概念(howto)
    • Sybase数据库管理与维护经验谈之日志

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有