大家好,现在遇到一个问题如下:
定义宿主变量char str[10+1];
数据库表A中一个字段aaa(varchar2(10))的值是'abcdefg'
通过程序取值:
    EXEC SQL select aaa into :str from A;
得到的值显示出来是'abcdefg   '
后面会多出三个空格,好像会自动填满。请问我不需要后面的空格,该如何改动?
谢谢!

解决方案 »

  1.   

    EXEC SQL select rtrim(aaa) into :str from A; 
      

  2.   


    我的字段都是清楚过空格的'update A set aaa=LTRIM(RTRIM(aaa));'并且用客户端(如toad)查看这个字段,后面都是没有空格的。
    查看长度(length(aaa))的结果也是7可是从程序里面读出来就会多3个空格。。
      

  3.   

    EXEC ORACLE OPTION(char_map=string);
    加上这个试试
      

  4.   


    这个我试过了。但是我是在makefile中加的,所以对输入宿主变量也会产生影响。不过好像有函数rtrim和ltrim函数,不过我无法调用。请问这需要哪个头文件?
      

  5.   

    在代码中添加EXEC ORACLE OPTION(char_map=string)和makefile中添加是一样的对输入宿主变量产生了影响,本来能够通过某个字段查询到数据的,添加后就反ORA-01403了
      

  6.   

    好像只有两个办法处理了
    一是将宿主变量定义成varchar型,这样可以知道长度。但是这样对代码的改动非常大。
    二是自己写一个去掉空格的函数,对每个输出宿主变量都调用这个函数。
    谢谢大家了!!!