1、EXEC SQL COMMIT WORK RELEASE;与EXEC SQL COMMIT;有什么不同么?2、EXEC SQL ROLLBACK WORK与EXEC SQL ROLLBACK WORK RELEASE有什么不同?3、是不是说如果之前用了:
EXEC ORACLE OPTION (RELEASE_CURSOR = YES);这里就可以不用WORK RELEASE?4、另外EXEC ORACLE OPTION (SELECT_ERROR = YES);表示什么呢?5、对于一个varchar类型的SQL变量定义,必须指定其长度?
strcpy(vc_user.arr,"scott/tiger@DEMO");
例如:vc_user.len=16;
exec sql connect :vc_user;谢谢!

解决方案 »

  1.   

    1、EXEC SQL COMMIT WORK RELEASE;与EXEC SQL COMMIT;有什么不同么?EXEC SQL COMMIT WORK RELEASE:提交结果并断开数据库连接
    EXEC SQL COMMIT:提交结果但不断开数据库连接2、EXEC SQL ROLLBACK WORK与EXEC SQL ROLLBACK WORK RELEASE有什么不同?EXEC SQL ROLLBACK WORK:回滚结果但不断开数据库连接
    EXEC SQL ROLLBACK WORK RELEASE:回滚结果并断开数据库连接
    3、是不是说如果之前用了:
    EXEC ORACLE OPTION (RELEASE_CURSOR = YES);这里就可以不用WORK RELEASE?4、另外EXEC ORACLE OPTION (SELECT_ERROR = YES);表示什么呢?SELECT_ERROR是proc编译时候的一个参数,一般这些参数都有默认值,这句话是显示设定这个参数值。
    你可以在cmd中敲入proc 后,显示的很多参数后面有这些参数的说明。5、对于一个varchar类型的SQL变量定义,必须指定其长度?
    strcpy(vc_user.arr,"scott/tiger@DEMO");
    例如:vc_user.len=16;
    exec sql connect :vc_user;根据我的经验,写不写都可,也可能是和编译的时候的参数选择有关,但是写了一定不会错,因此在开发中最好是写上。
      

  2.   

    非常感谢楼上的回答,很详细,但还想问下:3、是不是说如果之前用了:
    EXEC ORACLE OPTION (RELEASE_CURSOR = YES);这里就可以不用WORK RELEASE?这里proc的解释是:
    release_cursor no             Control release of cursors from cursor cache
    如果不将其设为YES,难道用了一个cursor之后它不会自动释放,之后再用cursor就不能用了?