前台jsp开发
后台是oracle
具体问题描述:我在jsp页面中调用了一个存储过程,存储过程的内容很简单,就是一个insert语句,过程中没有使用游标,在使用过程中,经常报ORA-01001: invalid cursor这个错误。很郁闷,相同的参数有时能成功,有时会报错。
tomcat使用的是 Oracle JDBC Driver version - 9.0.2.0.0
orcale是10g的
很郁闷。
请高手指点!!
解决方案 »
- 【炒股软件】我想编写一套交易分析软件,该学哪门语言?
- 请大家分析如下语句,看oracle是怎么工作的?
- oracle一次卸载后为什么不能再安装了,跪求各位大侠指点一二。
- oracle中如何表示非法字符是字符串中的其中一个字符
- oracle数据库插大量数据时,操作失败有那些原因?
- oracle中的表名问题
- 请教两个SQL语句不同Cost的原因
- sql plus 語句违反整合性限制条件ORA-02291: 違反整合性限制條件 (SYSTEM.SYS_C003039) 無法找到父項鍵
- 怎样用C#或VB对一个远程oracle数据库进行操作?放oracle的机子是一个外地域
- 请问在redhat 8 linux下oracle9i 怎样运行(已经安装成功)
- 关于oracle10g oem中数据备份的问题
- shell 访问数据库密码的隐藏
MSGID IN VARCHAR2,
ATTIME IN VARCHAR2,
T_SRCTERMID IN VARCHAR2,
AIN_SERVICEID IN VARCHAR2,
FEE_TYPE IN NUMBER,
SRCTERMPHONE IN VARCHAR2,
DESCTERMID_LIST IN VARCHAR2,
DESCTERMID_TYPE IN VARCHAR2,
UNIT_LIST IN VARCHAR2,
ORGID IN NUMBER,
MSGLEVEL IN NUMBER,
RET OUT NUMBER,
ERRORMSG OUT VARCHAR2)
AS
BEGIN
DECLARE
V_ERR_CODE NUMBER;
V_ERR_TXT VARCHAR2(600); DESCTERMID_LIST_VAR VARCHAR(4000);
DESCTERMID_TYPE_LIST_VAR VARCHAR(2000); BEGIN
RET:=0;
DESCTERMID_LIST_VAR := SUBSTR(DESCTERMID_LIST,1,4000);
INSERT INTO SMS_DISPATCHER
(MSGID, ATTIME,T_SRCTERMID,AIN_SERVICEID,FEE_TYPE,SRCTERMPHONE,
DESCTERMID_LIST,DESCTERMID_TYPE,UNIT_LIST,
CREATEDATE,SRC_ORGID,MSG_LEVEL)
VALUES(MSGID,ATTIME,T_SRCTERMID,AIN_SERVICEID,FEE_TYPE,SRCTERMPHONE,
DESCTERMID_LIST_VAR,DESCTERMID_TYPE,UNIT_LIST,
SYSDATE,ORGID,MSGLEVEL);
COMMIT;
RET:=1;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK; V_ERR_CODE := SQLCODE;
V_ERR_TXT := 'PROC_SMS_DISPATCHER:'||SUBSTR(SQLERRM,1,200)||DBMS_UTILITY.FORMAT_ERROR_BACKTRACE(); INSERT INTO PROC_ERR_LOGS(CODE,MESSAGE,INFO)
VALUES(V_ERR_CODE,V_ERR_TXT,'EXCEPTION');
COMMIT;
END;
END;页面的代码:
//接口调用(存储过程)
String procedure = "{call PROC_SMS_DISPATCHER(?,?,?,?,?,?,?,?,?,?,?,?,?) }";
CallableStatement cstmt = con.prepareCall(procedure);
cstmt.setString(1,message_id);
cstmt.setString(2,"sysdate");
cstmt.setString(3,srcTermID+"66");
cstmt.setString(4,"DX");}
//单位状态
sql = " select fee_status from table_01 where id = "+ id;
rs = stmt.executeQuery(sql);
rs.next();
cstmt.setString(5,rs.getString(1)); sql = " select mobile from table_02 where id=" + p_id;
rs = stmt.executeQuery(sql);
rs.next();
cstmt.setString(6,rs.getString(1)); cstmt.setString(7,desile_con);
cstmt.setString(8,"2");
cstmt.setString(9,det_con); cstmt.setString(10,g_id);
cstmt.setString(11,glevel);
cstmt.registerOutParameter(12,java.sql.Types.INTEGER);
cstmt.registerOutParameter(13,java.sql.Types.VARCHAR);
int lala=10;
cstmt.executeUpdate();
lala=cstmt.getInt(12);
if(lala==0){
----过程调用失败
}
个人感觉,是存储过程的问题,因为报错是 ora-01001.