PL/SQL Function:--->
  RTRIM()

解决方案 »

  1.   

    EXEC SQL BEGIN DECLARE SECTION;
    char   result[1024];
    char  sql_txt[1024];
    EXEC SQL END DECLARE SECTION;
    strcpy(sql_txt , str1); EXEC SQL WHENEVER SQLERROR GOTO sqlerror;
    oraca.orastxtf=ORASTFERR;
    EXEC SQL PREPARE S FROM :sql_txt;
    EXEC SQL DECLARE C CURSOR FOR S;
    EXEC SQL OPEN C;
    EXEC SQL WHENEVER NOT FOUND GOTO no_more;
    while(1)
    {
    memset(result, '\0' , sizeof(result));
    EXEC SQL FETCH C INTO :result;
    strcpy(str2,result);
    } no_more:
    EXEC SQL WHENEVER SQLERROR CONTINUE;
    EXEC SQL COMMIT WORK;
    return 1; sqlerror:
    EXEC SQL WHENEVER SQLERROR CONTINUE;
    EXEC SQL CLOSE C;
    EXEC SQL ROLLBACK;
    return sqlca.sqlcode;假如查询的数据只有10位,而result的长度有1024,后面全是空格呀!这个问题怎么解决呀?并且如果查询的数据也有空格呢??那岂不是数据补正确了吗
      

  2.   

    EXEC SQL FETCH C INTO :result;
    EXEC SQL  select ltrim(rtrim(result)) into :resilt from dual;
    strcpy(str2,result);
      

  3.   

    将变量定义成varchar,例如:
    EXEC SQL BEGIN DECLARE SECTION;
    varchar   result[1024];
    char  sql_txt[1024];
    EXEC SQL END DECLARE SECTION;
    ... EXEC SQL FETCH C INTO :result;
    result.arr[result.len]='\0';
    strcpy(str2,result.arr);
    ...
      

  4.   

    EXEC SQL BEGIN DECLARE SECTION;
    varchar2 result[1024];
    EXEC SQL END DECLARE SECTION;memset(&result,0,sizeof(result));
    EXEC SQL  select 'aaa' into :resultfrom dual;
    result.arr[result.length]=0;
      

  5.   

    我的意思是说我数据库的数据最后也有空格。这些空格要保留,假如我的数据是前面是4个1后面是6个空格,这6个空格要保留。而在取数据的时候,proc在变量后面全都补空格了!就是说实际数据与proc查询出来的数据不等呀。
      

  6.   

    bobfang(匆匆过客) 
    strcpy(str2,result.arr);
    编译补过去!!
      

  7.   

    什么东西,只要trim()不就结了