pro*c中如何用结构体插入数据啊
pmanInfo是个结构体,里面全是char[],与表里的字段一一对应,可怎么使用结构体插入啊
我写成
EXEC SQL INSERT INTO MANINFO(MANID,MANAGE,MANSEX,EDUCATION,MANNAME,MANADDRESS) VALUES (:pmanInfo);

EXEC SQL INSERT INTO MANINFO(MANID,MANAGE,MANSEX,EDUCATION,MANNAME,MANADDRESS) VALUES (:pmanInfo.manId,:manInfo.manAge,:manInfo.manSex,:manInfo.education,:manInfo.manName,:manInfo.manAddress);
都通不过pro*c预编译,高人们指教一下啊
pmanInfo在DECLARE中声明过了
再问个问题,如果pmanInfo是结构体指针时怎么用呢,与上面的情况有什么区别

解决方案 »

  1.   

    语法应该是这样的 :
    EXEC SQL INSERT INTO MANINFO(MANID,MANAGE,MANSEX,EDUCATION,MANNAME,MANADDRESS) VALUES (:pmanInfo.manId,:manInfo.manAge,:manInfo.manSex,:manInfo.education,:manInfo.manName,:manInfo.manAddress);
    保的什磨错?
    把冒号去掉试一下
      

  2.   

    我试了一下,去掉冒号就可以了,不过为什么啊,宿主变量不是要加冒号吗,而且结构体变量跟结构体指针变量都是去掉冒号的格式才能通过预编译,不明白为什么再问个问题,EXEC SQL WHENEVER SQLERROR DO sql_error()这句话的作用域不是说从它往下都有效吗,怎么在调用的子函数里就失效了,是不是每个子函数还要重新声明一下呢谢谢楼上的兄弟了
      

  3.   

    再问个问题,EXEC SQL WHENEVER SQLERROR DO sql_error()这句话的作用域不是说从它往下都有效吗,怎么在调用的子函数里就失效了,是不是每个子函数还要重新声明一下呢好像是只在他所在的函数里面有效,每一个函数都要有这个.下午去办公室看了一下以前的程序,这个问题我是这样解决的:
    结构体aa里面有一个字符数组:char   bb[3]; 
    在程序里面这样处理:
    char  *r1[10];
    memcpy(r1,aa.bb,3);
    EXEC SQL AT :conn3 INSERT INTO ... alues(...,:r1, ...);