• 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 1053错误,sybase编程,sybase数据库教程,sybase数据库,sybase等相关知识,希望本文的分享对您有所帮助
</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编程中出现的错误及其解决办法

相关文章

  • 2017-06-28Sybase 安装及系统管理(下)
  • 2017-06-28sybase数据库恢复
  • 2017-06-28Sybase和Red Hat宣布联合开发计划 旨在关注客户价值
  • 2017-06-28什么是游标
  • 2017-06-28C/S体系中设置工作站与服务器时钟同步
  • 2017-06-28得克萨斯州劳动力委员会
  • 2017-06-28Sybase应用案例:Bridge信息系统
  • 2017-06-28Sybase数据仓库落户加拿大统计局
  • 2017-06-28如何动手修改interfaces文件
  • 2017-06-28Sybase数据库死锁对策

文章分类

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

最近更新的内容

    • 精细讲解实战经验创建Sybase用户数据库
    • JConnect编程连接ASA示例
    • linux下安装的sybase的步骤
    • 教你学会怎样升级到SQL Anywhere10(10)
    • Sybase RS rs_init问题的解决方法
    • 由浅至深讲述Sybase数据库死锁问题
    • 在Sybase ASE中使用Passthrough
    • 分析Sybase的数据空间占用为何如此之大
    • SYBASE ASA数据库恢复方法
    • 关于sybase数据库的锁

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

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