1、你的程序如果多个人同时使用是否有并发问题
2、检查单机测试数据和服务器上的数据是否有差异
3、是否与其他程序有并发问题
4、单机测试是的参数传递和服务器调用时是否有差异
5、是否引用了jar或pll文件,服务器是否已经正确配置

解决方案 »

  1.   

    在main函数里try  catch 异常 ,把堆栈打印出来就知道问题在哪里了
      

  2.   

    oracle form和其他的开发工具可不一样,没有什么main函数
    不过确实有一个on_error触发器,可以在那里获取异常信息
      

  3.   

    首先程序不存在并发性问题,然后server是绝对正确的。
    公司是世界500强,所以问题应该不是处在server上,local PC和server上的测试role不相同,key in进去的数据是一样的,但是在参数传递的时候,local上没有问题,而server上多了一条为空的数据,在insert的时候就出错了,现在就是不知道这条为null的数据是怎么出现的。
      

  4.   

    这种问题只有具体看到程序,才能具体检查哪里存在问题,否则都只能是猜想
    由于使用不同的role,应该会相应的调用不同的数据,数据的差异可能会导致此问题
    比如你单机测试的role下存在数据,而sever上的role下不存在数据,就有可能插入空记录
      

  5.   

    PROCEDURE SAVE_INPUT_PARAMETERS(pi_file_num IN TGP_YOUTH_FILE_INFO.file_num%TYPE,
                                        po_return   OUT PLS_INTEGER) IS
        BEGIN
          GP_TRACE.MOD_START(c_fcn_nm || '.SAVE_INPUT_PARAMETERS');
        
          DELETE FROM TGP_YOUTH_FILE_INFO T WHERE T.file_num = pi_file_num;
          FORALL i IN 1 .. g_youth_info_tab.COUNT 
            INSERT INTO TGP_YOUTH_FILE_INFO VALUES g_youth_info_tab (i);
        
          po_return := 0;
          GP_TRACE.MOD_END(c_fcn_nm || '.SAVE_INPUT_PARAMETERS');
        EXCEPTION
          WHEN OTHERS THEN
            ROLLBACK;
            po_return := 99;
        END SAVE_INPUT_PARAMETERS;
      

  6.   

    上面那个是出错的procedure,g_youth_info_tab这个东西是个全局变量传入的tab,在insert的时候这个tab里面只有一个record,但是在server上,多出来了一条全是NULL的record,因为local PC上调试看不到bug,测试出bug的是一个data entry 的role,这个role根本都不能连接DB的,所以在local上没法用这个role测试,现在因为看到不BUG,所以才只能靠猜的方式来尝试解决
      

  7.   

    全局变量
    我这开发基本是不让用全局变量的
    g_youth_info_tab都有哪些位置会给他赋值
    你这个过程运行前g_youth_info_tab里面应该就已经存在空记录了
      

  8.   

    全局变量时我解释错误,应该说g_youth_info_tab这个tab在整个package里面都有效,在init_pkg时是写了g_youth_info_tab.delete的,最蛋疼的是local没法debug,完全靠猜来解决问题