因为function中有insert和update操作 简单的使用sql:“select func_myfunc from dual”行不通,请教有什么好的办法,我是使用oci连接数据库的......

解决方案 »

  1.   

    建议不要在function中使用insert ,update,delete语句,可以在procedure中使用insert ,update,delete.
      

  2.   


    sql里的function是不能有DML语句的所以你这里的select func_myfunc from dual;是不能执行的。建议你有错的时候,可以先在sql环境里执行以下sql语句就知道问题了,不至于到联调的时候才发现sql里的错误至于上面welyngj提到的也是需要注意的如果要在function里做DML是需要考虑事务的。比较麻烦,所以最好还是在procedure里去做这些东西。
      

  3.   

    首先你必须要有oracle的服务器端(或客户端),然后你可以在oracle文件夹中找到oci的头文件和库文件。如果你是由vc6.0编辑程序的话,你需要在Project Setting-〉C/C++属性页-〉Category中选择”Preprocessor”,在Additional include directories:中添加oci.h所在的目录。然后在Preject Settings-〉Link页中,Category选择General,在Object/Library modules中填写oci.lib的完整名称(即包含路径名),将oci.lib配置进去,就可以OK啦
    如果你是在linux或者unix环境下用gc,就需要修改环境变量和makefile了。这个就比较麻烦了。