各位同仁,小弟现在在Aix下写db2存储过程,自己只是能看懂代码,还不是非常了解存储过程。现在是仿着别人的写。
需要在存储过程中读写文件,我写了一个,但是读不了,在存储过程中使用ffopen(已存在全路径文件名,'r')读文件,读不了,返回-1。
我也不知道这个ffopen是存储过程自带的还是在哪编的。但是别人的那个存储过程却能读写文件,同样的方式,人家的可以读,我的就读不了,我看那文件的权限三个组都有读的权限。
然后我就测试读写,用ffopen(文件名,'w+b'),文件能创建,但是创建了空文件,用ffopen(文件名,'r')也没法读,但是这次返回的是-268416704。
希望各路高手好汉能给解惑!谢谢!
------解决方案--------------------------------------------------------
FILE *t;
mode_t Mode2;
Mode2 = 0777;
chmod("/log/log",Mode2);
t=fopen("/log/log","a");
fprintf(t,"-->start of stored procedure \n");
这样就可以创建并追加文件内容了。
------解决方案--------------------------------------------------------
ffopen应该不是C的标准函数。
------解决方案--------------------------------------------------------
这个应该是和权限有关,在db2的存储过程里执行的,用户应该不是你数据库名字的那个权限吧,具体的原因我也说不明白。