在PRO-C中,student表中有一Student_ID字段:char StudentID[50] = 's001';select * from student
         where Student_ID = :StudentID;
请问可以这样直接比较是否相等吗?我做了好像不行啊
用Student_ID = to_char(:StudentID);也不行
请问有什么解决方法?谢谢!

解决方案 »

  1.   

    补充:Student_ID 的类型是varchar2
      

  2.   

    可以这样比较的。
    c语言里面要这样:
    char StudentID[50] = "s001";
    不是单引号。
      

  3.   

    这个我知道,但是我现在要做的是通过变量名来等值比较,
    请问where Student_ID = :StudentID;
    这个写法可行吗?
    还是PRO-C的sql语句中不支持char []的等值比较
      

  4.   

    你那个写法应该是可以的,改成
    char StudentID[50] = "s001\0";

    char *StudentID="s001";
    试试看。给你一个例子:
    /*add by lht 20070725 获取参数值*/
    long tblGetParamValue(char *sSwitchId,char *sSwitchValue)
    {
    char sValueTemp[20+1];

    EXEC SQL WHENEVER SQLERROR DO sql_error( __LINE__ , __FILE__); EXEC SQL
            select switch_value 
            into :sValueTemp
            from card_switch
            where switch_id=:sSwitchId;
            
    strcpy(sSwitchValue,sValueTemp);        

    if (SQL_DATA_NOT_FOUND)
    {
    return(DATA_NOT_FOUND);
    }
    if (SQL_ERROR) return (sqlca.sqlcode);

    return(NO_ERROR);}
      

  5.   

    晕,把你的代码贴出来吧,不行是报错啊还是查不到数据?实在找不到错误就用gdb跟踪一下吧。
      

  6.   

    我跟踪过了,问题是找不到数据,错误就在这行
    有一个细节,就是我定义了char StudentID[50]之后
    后面对它的赋值是通过游标fetch into ...做的,之后我把它打印出来是正确的
    再后来就开始做上面的事了。char StudentID[50];
    .....
    EXEC SQL FETCH VOD_MONTH_DISCOUNT_ITEM_CUR INTO :StudentID;//在这边赋值
    printf("\n====RocheFoo test====sProductID = %s \n", StudentID);//测试值正确
    select ... where ...and Student_ID = :StudentID我把:StudentID替换成具体的值在PL\SQL下是有结果的,但是程序却没有结果!
      

  7.   

    rtrim(Student_ID) = rtrim(:StudentID)