Proc中取值问题

lwh_1024 2008-12-16 12:48:58
大家好,现在遇到一个问题如下:
定义宿主变量char str[10+1];
数据库表A中一个字段aaa(varchar2(10))的值是'abcdefg'
通过程序取值:
EXEC SQL select aaa into :str from A;
得到的值显示出来是'abcdefg '
后面会多出三个空格,好像会自动填满。请问我不需要后面的空格,该如何改动?
谢谢!
...全文
89 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Andy__Huang 2008-12-16
  • 打赏
  • 举报
回复
EXEC SQL select rtrim(aaa) into :str from A;
lwh_1024 2008-12-16
  • 打赏
  • 举报
回复
好像只有两个办法处理了
一是将宿主变量定义成varchar型,这样可以知道长度。但是这样对代码的改动非常大。
二是自己写一个去掉空格的函数,对每个输出宿主变量都调用这个函数。
谢谢大家了!!!
lwh_1024 2008-12-16
  • 打赏
  • 举报
回复
在代码中添加EXEC ORACLE OPTION(char_map=string)和makefile中添加是一样的

对输入宿主变量产生了影响,本来能够通过某个字段查询到数据的,添加后就反ORA-01403了
lwh_1024 2008-12-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wiler 的回复:]
EXEC ORACLE OPTION(char_map=string);
加上这个试试
[/Quote]

这个我试过了。但是我是在makefile中加的,所以对输入宿主变量也会产生影响。

不过好像有函数rtrim和ltrim函数,不过我无法调用。请问这需要哪个头文件?
wiler 2008-12-16
  • 打赏
  • 举报
回复
EXEC ORACLE OPTION(char_map=string);
加上这个试试
lwh_1024 2008-12-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 caoleione 的回复:]
看起来应该是程序中定义变量的问题 不是数据库数据提取的问题
[/Quote]

定义变量会存在什么问题呢?肯能性不大吧。。。
caoleione 2008-12-16
  • 打赏
  • 举报
回复
看起来应该是程序中定义变量的问题 不是数据库数据提取的问题
lwh_1024 2008-12-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hdhai9451 的回复:]
EXEC SQL select rtrim(aaa) into :str from A;
[/Quote]

我的字段都是清楚过空格的'update A set aaa=LTRIM(RTRIM(aaa));'

并且用客户端(如toad)查看这个字段,后面都是没有空格的。
查看长度(length(aaa))的结果也是7

可是从程序里面读出来就会多3个空格。。。。。

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧