Oracle 存储过程—为数传递变量
发布时间:2020-12-31 19:43:05 所属栏目:站长百科 来源:网络整理
导读:副标题#e# oracle 存储过程的基本语法 create or replace procedure proc1( p_para1 varchar2, p_para2 out varchar2, p_para3 in out varchar2 )as v_name varchar2(20); begin v_name := ‘张三丰‘; p_para3 := v_name; dbms_output.put_line(‘p_para3:
|
? ---调用2 begin proc_test(e_id => ‘dd‘,e_username => ‘A‘,e_password => ‘aa‘,e_sex => ‘d‘,e_sal => 1000); commit; end; --调用3 call proc_test(e_id => ‘dd‘,e_sal => 1000); commit; ? ? ? java中的调用: ? public static void insert() throws ClassNotFoundException,SQLException {
String url = "jdbc:oracle:thin:@localhost:1521:orcl";
String name = "user2";
String pwd = "user2";
String Drivername = "oracle.jdbc.driver.OracleDriver";
Class.forName(Drivername);
Connection connection = DriverManager.getConnection(url,name,pwd);
CallableStatement call = connection
.prepareCall("call PROc_TEST(e_id => ‘dd‘,e_sal => 1000)");
// 执行存储过程
boolean b = call.execute();
if (b = true) {
System.out.println("插入成功!");
}
connection.close();
}
? ? ? ? --2. 创建带返回参数的 ? --in是输入入的参数,out是输出的参数
CREATE OR REPLACE procedure proc_test1(t in varchar,r out varchar) as
begin
select count(*) into r from userinfo where username like t;
end;
--调用,
--在dos里执行多行语句是以‘/‘表示结束
DECLARE outobj VARCHAR2(4);
BEGIN
proc_test1(t => ‘A‘,r => outobj );
dbms_output.put_line(‘outobj = ‘ || outobj);
END;
java中的调用: ? public static void one() throws ClassNotFoundException,SQLException {
String url = "jdbc:oracle:thin:@localhost:1521:orcl";
String name = "user2";
String pwd = "user2";
String Drivername = "oracle.jdbc.driver.OracleDriver";
Class.forName(Drivername);
Connection conn = DriverManager.getConnection(url,pwd);
CallableStatement proc = conn
.prepareCall("{ call PROC_TEST1(?,?) }"); // 存储过程
proc.setString(1,"%A%");// 设置第一个参数输入参数
proc.registerOutParameter(2,Types.VARCHAR);// 第二个参数输出参数,是VARCHAR类型的
proc.execute();// 执行
String testPrint = proc.getString(2);// 获得输出参数
System.out.println("=用户名包含A的个数为=" + testPrint);
conn.close();
}
? ? ? ? --3.创建带查询结果的 --3. 由于oracle存储过程没有返回值,它的所有返回值都是通过out参数来替代的,列表同样也不例外,但由于是集合,所以不能用一般的参数,必须要用pagkage了.所以要分两部分,
--3.1, 建一个程序包。如下:
create or replace package testpackage as
type test_cursor is ref cursor;
end;
--3.2,建立存储过程,存储过程为:
create or replace procedure testc(p_cursor out testpackage.test_cursor) is
begin
open p_cursor for
select * from userinfo;
end;
java中的调用: (编辑:网站开发网_安阳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐

