Oracle.DataAccess.Client.OracleException ORA-00600: 内部错误代码,通过C#执行上面存储过程报错,而通过PLS
时间:2011-03-04 来源:KSpring
CREATE OR REPLACE PROCEDURE SP_CA_EDI_TO_TXT(S_FILTERSTR IN VARCHAR2,
S_ROLEID IN VARCHAR2,
S_USERID IN VARCHAR2,
RC1 OUT PACKAGE_FRTNET.REFCURSOR)
/*******************************************************
**************************************************/
IS
V_INDEX INTEGER;
V_START INTEGER;
V_SUBSTR VARCHAR2(100);
BEGIN
DELETE FROM TMP_RP_REQUEST_STR_LIST;
IF (S_FILTERSTR IS NOT NULL) THEN
V_START := 1;
V_INDEX := INSTR(S_FILTERSTR, ';', V_START);
WHILE (V_INDEX >= 0 AND V_INDEX > V_START) LOOP
IF (V_INDEX = 0) THEN
V_SUBSTR := SUBSTR(S_FILTERSTR,
V_START,
LENGTH(RTRIM(S_FILTERSTR)) - V_START + 1);
ELSE
V_SUBSTR := SUBSTR(S_FILTERSTR, V_START, V_INDEX - V_START);
END IF;
INSERT INTO TMP_RP_REQUEST_STR_LIST (REQUEST_KEY) VALUES (V_SUBSTR);
V_START := V_INDEX + 1;
V_INDEX := INSTR(S_FILTERSTR, ';', V_START);
END LOOP;
END IF;
OPEN RC1 FOR
SELECT CEII.SHIP_EN_NAME AS SHIPPER_NAME,
CEII.VOYAGE_NO,
CEII.CUSTOM_S_D_NO,
A.CNT_NO,
(SELECT F_LINK(CEICIN.CARGO_DESCRIPTION_CN)
FROM CA_EDI_IFCSUM_CARGO_IN CEICIN
WHERE CEICIN.EII_ID = CEII.EII_ID
AND CEICIN.RECORD_TYPE='0') AS CARGO_DESCRIPTION_CN
FROM CA_EDI_IFCSUM_IN CEII
JOIN TMP_RP_REQUEST_STR_LIST TMP
ON TMP.REQUEST_KEY = CEII.EII_ID
LEFT JOIN (SELECT CEICI.EII_ID,
f_link_lob(CEICI.CNT_NO || '/' ||
SUBSTR(CEICI.CNT_SIZE_TYPE, 0, 2) || '''' ||
' ') AS CNT_NO
FROM CA_EDI_IFCSUM_CNT_IN CEICI
JOIN TMP_RP_REQUEST_STR_LIST TMP
ON TMP.REQUEST_KEY = CEICI.EII_ID
GROUP BY CEICI.EII_ID) A
ON A.EII_ID = CEII.EII_ID;
END;
通过C#执行上面存储过程报错,而通过PLSQL执行不报错。谁知道原因。
System.Exception: 内部错误代码, 参数: [kokegPinLob1], [], [], [], [], [], [], [] ---> Oracle.DataAccess.Client.OracleException ORA-00600: 内部错误代码, 参数: [kokegPinLob1], [], [], [], [], [], [], [] 在 Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure)
在 Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, Object src)
在 Oracle.DataAccess.Client.OracleDataReader.Read()
在 FC.Server.DbAccess.CDbTransaction.FillDataTable(IDataReader reader, DataSet dataset, DataTableMappingCollection tableMappings, String tableName, Int32 intStartRecord, Int32 intMaxRecords)
在 FC.Server.DbAccess.Oracle.COracleTransaction.DoQuery(String strCmdText, CDbParmCollection parameters, CommandType cmdtype, DataTableMappingCollection mappings, DataSet ds, Int32 startRecord, Int32 maxRecordCount, String tableName)
--- 内部异常堆栈跟踪的结尾 ---
在 FC.Server.DbAccess.Oracle.COracleTransaction.DoQuery(String strCmdText, CDbParmCollection parameters, CommandType cmdtype, DataTableMappingCollection mappings, DataSet ds, Int32 startRecord, Int32 maxRecordCount, String tableName)
在 FC.Server.DbAccess.Oracle.COracleTransaction.DoQuery(String strCmdText, CDbParmCollection parameters, CommandType cmdtype, DataTableMappingCollection mappings, DataSet ds)
在 FC.Server.DbAccess.CDbTransaction.QuerySP(CStoredProcedureParms par, DataSet result)