【发布时间】:2014-03-05 20:31:05
【问题描述】:
我写了一个存储过程来计算表的大小。
create or replace PROCEDURE RETRIEVE_TABLE_SIZE (
p_segment_type in VARCHAR2,
p_segment_name in VARCHAR2,
P_table_size out INTEGER )
AS
BEGIN
SELECT bytes/(1048576*1024) as GB FROM DBA_SEGMENTS WHERE SEGMENT_NAME = p_segment_type AND SEGMENT_TYPE = p_segment_name ;
END ;
我从我的 java 类中调用这个存储过程,我的代码在下面
String sqlQuery = "{call RETRIEVE_TABLE_SIZE(?,?,?)}";
CallableStatement callableStatement = connection.prepareCall(sqlQuery);
callableStatement.setString("p_segment_type","TABLE");
callableStatement.setString("p_segment_name","SIM_HEADER");
callableStatement.registerOutParameter("P_table_size",java.sql.Types.INTEGER);
callableStatement.executeUpdate();
Integer size = callableStatement.getInt(1);
System.out.println("size is: "+size);
但我收到以下错误:
Exception in thread "main" java.sql.SQLException: ORA-06550: line 1, column 7:
PLS-00201: identifier 'RETRIEVE_TABLE_SIZE' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
这是我第一次编写存储过程。如果我做错了什么,请纠正我。
【问题讨论】:
-
作为一般说明,经过反复讨论,我坚信这个问题现在重复了 this StackOverflow question,它表现出相同的问题。
标签: java