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;
不过确实有一个on_error触发器,可以在那里获取异常信息
公司是世界500强,所以问题应该不是处在server上,local PC和server上的测试role不相同,key in进去的数据是一样的,但是在参数传递的时候,local上没有问题,而server上多了一条为空的数据,在insert的时候就出错了,现在就是不知道这条为null的数据是怎么出现的。
由于使用不同的role,应该会相应的调用不同的数据,数据的差异可能会导致此问题
比如你单机测试的role下存在数据,而sever上的role下不存在数据,就有可能插入空记录
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;
我这开发基本是不让用全局变量的
g_youth_info_tab都有哪些位置会给他赋值
你这个过程运行前g_youth_info_tab里面应该就已经存在空记录了