我想使用Java从数据库中检索数据并显示它,所以我创建了这个PL / SQL函数,该函数返回一个游标:
create or replace function std_getInfoFunc return types.cursortype
as
my_cursor types.cursorType;
begin
open my_cursor FOR
SELECT s.FirstName, s.LastName, s.Address, s.City, s.Province
, s.PostalCode, c.CourseName
FROM Students s, Courses c, StudentAndCourses cs
Where s.StudentID = cs.StudentID
AND c.CourseID = cs.CourseID;
Return my_cursor;
end;
在我的Java代码中,我按以下方式调用该函数:
try{
CallableStatement cst=connection.prepareCall("{? = call std_getInfoFunc}");
cst.registerOutParameter(1, oracle.jdbc.OracleTypes.CURSOR);
cst.execute();
res=(ResultSet) cst.getObject(1);
while(res.next()){
System.out.println(res.getString(1));
}
}
catch(SQLException e){
e.printStackTrace();
}
finally{
res.close();
cst.close();
conn.close();
}
该代码产生以下异常:
run:
java.sql.SQLException: ORA-06550: line 1, column 13:
PLS-00905: object SAS.STD_GETINFOFUNC is invalid
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:439)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:395)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:802)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:436)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:186)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:521)
at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:202)
at
oracle.jdbc.driver.T4CCallableStatement.executeForRows(T4CCallableStatement.java:1005)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1307)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3449)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3550)
at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:4710)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.execute(OraclePreparedStatementWrapper.java:1374)
at DBControler.viewStdInfo(DBControler.java:95)
at Test_02.main(Test_02.java:18)
为什么?
错误的可能原因是:(在代码段-函数中)
1.包“类型”不存在。
create or replace package types
as
type cursorType is ref cursor;
end;
/
2无效的SQL select语句(创建函数后已删除或更改表或列)。
您需要编写一个new function
with simple
sql语句,并在Sql
提示符下使用Java
代码运行它。
问题内容: 任何人都可以帮我吗:我想从Pl / SQL,Oracle RDBMS调用一个Java程序,以下是设置 Windows 7计算机,Java安装在C:\ Program Files \ Java \ jdk1.7.0_02 我创建了一个目录来保存Java文件。D:\ Java,其中有一个hello.java文件。 可以很好地编译它,并在同一目录中生成.class文件。 由于我必须使用PL
问题内容: 所以我有一个功能可以检查预订表中有多少取消: 要在SQL中执行他,我使用: 我的结果是: 我的问题是有人可以帮助我在JAVA中调用该函数吗,我尝试过但没有运气。 问题答案: Java提供了这样的目的。 将打印与在pl / sql中相同的内容。根据文档, 创建一个CallableStatement对象以调用数据库存储过程。CallableStatement对象提供了用于设置其IN和OUT
我有一个函数,它在PL/SQL中返回一个布尔值。我曾尝试直接获取那个布尔值,但没有成功,所以现在我试图将其转换为字符串(我不想修改数据库): 此代码在数据库中正常工作:
主要内容:1. 创建函数,2. 调用函数,3. PL/SQL递归函数在本章中,我们将讨论和学习PL/SQL中的函数。函数与过程(也叫程序)相同,只不过函数有返回一个值,而过程没有返回值。 因此,上一章中所有有关存储过程的内容也适用于函数。 1. 创建函数 使用语句创建独立函数。语句的简化语法如下: 其中, function-name是指定要创建的函数的名称。 [OR REPLACE]选项指示是否允许修改现有的函数。 可选参数列表包含参数的名称,模式和类型。 表示将
问题内容: 我需要在pl / sql中解析数学方程式/函数。 oracle pl / sql中提供了哪些数学运算/函数可以帮助我解析这样的数学函数: 我想要一个函数来解析此语句并找出的值。 有什么帮助吗?谢谢。 问题答案: the,Oracle数据库不是数学工具。它具有许多算术和统计功能,但不具有能够解释方程式的内置功能。对不起。 碰巧的是,Marc(AKA Odie_63)最近发布了他用