//struct定义如下
typedef struct _sql_TBL_JobMakTitleMargin
{
   long mJobID;
   char chJobType;
   long chCoreTaskID;
   char chJobStatus;
   char chJobStatusDetail[129];
 }sql_TBL_JobMakTitleMargin;
//代码
EXEC SQL BEGIN DECLARE SECTION;
sql_TBL_JobMakTitleMargin stTbl;
EXEC SQL END DECLARE SECTION;EXEC SQL SELECT 
JMTMD_mJobID, //number类型
JMTMD_chJobType,//CHAR(1)
JMTMD_chCoreTaskID,//number
JMTMD_chJobStatus//CHAR(1)
JMTMD_chJobStatusDetail//varchar2(128)
INTO :stTbl FROM TBL_JobMakTitleMargin WHERE JMTMD_mJobID = :nJobID;以上代码,如果不读取最后那个varchar2类型的字段,是可以的,读取这个字段就会返回-1007
我查到的大概意思是select对列和into的变量不对应,不知道是什么原因:(

解决方案 »

  1.   

    补充:不读取JMTMD_chJobStatusDetail字段时,struct里面对应的项我也删除了
      

  2.   

    可能这个字段的值在表中有空格, 需用EXEC SQL VAR重定义CHAR型变量, 去掉空格。
    这样:
      EXEC SQL BEGIN DECLARE SECTION;
      char   chJobStatusDetail[129];
      EXEC SQL VAR chJobStatusDetail IS STRING(129);
      EXEC SQL END DECLARE SECTION;