我的意思是跟sql server 一样通过存储过程获取一个表,然后通过vb.net 获取此存储过程的表数据,我的存储过程如何做,vb.net 如何调用?
解决方案 »
- 请教各位PL/SQL中单步调试ORACLE存储过程的问题,多谢
- 请教高手一个EBS的问题
- 编译过程提示错误什么 PLS-00103: 出现符号 "("在需要下列之一时 := . ) , @ % default
- 多表关联查询,选择字段插入新表,该怎么做?
- 请问各位 有100张票四个窗口同时发售 的Java实现就是 用四个线程执行 怎样做呀
- 很简单的一个触发器的问题
- 公司最近项目要用oracle 请推荐几本oracle 中的经典图书.(类似于 <programmering windows> 一样的经典图书)
- 在触发器中创建一个Sequence,怎么写?以下代码有什么问题?
- function,procedure,package有什么共同点?各在什么方面有优势?
- oracle9i的ODBC问题,在线等待!
- 运行toad提示you have no oracle clients installed
- 查询统计问题
create or replace procedure sp_getdata (a_data_cur out sys_refcursor)
is
begin
open sys_refcursor for 'select * from tab';
end;
create or replace procedure sp_getdata (a_data_cur out sys_refcursor)
is
begin
open a_data_cur for 'select * from tab';
end;
如果是查询,就直接在代码中用sql语句oracle存储过程不支持直接写sql语句的,是通过游标来实现 ,比较麻烦的
cursor c_1 is select * from emp; --定义游标
r c_1%rowtype; --定义一个行对象,用于获得游标的值
BEGIN
if c_1%isopen then
CLOSE c_1;
end if;
OPEN c_1; --判断游标是否打开.如果开了将其关闭,然后在打开
LOOP
FETCH c_1 INTO r; --取值
EXIT WHEN c_1%NOTFOUND; --如果游标没有取到值,退出循环.
END LOOP;
END;
r代表一行数据,r.name代表字段值,我没学vb.net,只能给你个取数据的思路。
这问题应该能解决了
package jdbc;import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;import junit.framework.TestCase;public class CallProcedure extends TestCase {
public void testCase() {
Connection conn = null;
CallableStatement cs = null;
ResultSet result = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:orcl", "scott", "tiger");
cs = conn.prepareCall("{call selectAll(?)}");
cs.registerOutParameter(1, oracle.jdbc.OracleTypes.CURSOR);
cs.execute();
result = (ResultSet) cs.getObject(1); while(result.next()) {
System.out.println(result.getString(1)+"和"+result.getString(2));
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {cs.close();
conn.close();
result.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}