365教育平台官网

Oracle存储过程的调用和执行

Oracle存储过程的调用和执行

1、什么是存储过程:

用于在数据库中完成特定的操作或者任务。是一个PLSQL程序块,可以永久的保存在数据库中以供其他程序调用。

2、无参存储过程的使用:

1. CREATE OR REPLACE PROCEDURE 过程名 [(parameter,...)]

2. IS

3. 定义变量

4. Begin

5. Plsql程序

6. End;

1. 例:创建一个存储过程,用于向数据库中插入一条记录。

2. 第一步:创建

3. CREATE OR REPLACE PROCEDURE pro_1

4. IS

5. Begin

6. insert into person values (11,'aa','aav');

7. End;

8.

9. 第二步:在sql*plus中执行该过程

10.exec pro_1;

11.

12.第三步:通过JDBC使用存储过程。

13. private Connection conn = null;

14. private ResultSet rs = null;

15. private CallableStatement state = null;

16. //调用一个无参数的存储过程

17. public void testPro()

18. {

19. conn = Tools.getConnection();

20. try {

21. state = conn.prepareCall("{call pro_1}");

22. state.execute();

23. } catch (Exception e) {

24. // TODO Auto-generated catch block

25. e.printStackTrace();

26. }

27. }

3、带有IN类型参数的存储过程的使用

1. 例:创建一个存储过程,用于向数据库中插入一条记录。

2. 第一步:创建

3. CREATE OR REPLACE PROCEDURE pro_2(id number,name varchar2,email varchar2)

4. IS

5. Begin

6. insert into person values (id,name,email);

7. End;

8. 第二步:在sql*plus中执行该过程

9. exec pro_2(12,'aaa','aaa');

10.

11.第三步:通过JDBC使用存储过程。

12. //使用一个带有 IN 类型参数的存储过程

13. public void testPro_in(int id,String name,String email)

14. {

15. conn = Tools.getConnection();

16. try {

17. state = conn.prepareCall("{call pro_2(?,?,?)}");

18. state.setLong(1, id);

19. state.setString(2, name);

20. state.setString(3, email);

21. state.execute();

22. } catch (Exception e) {

23. // TODO Auto-generated catch block

24. e.printStackTrace();

25. }

26. }

4、带有OUT类型参数的存储过程的使用

1. 例:创建一个存储过程,用于返回数据库中的Person表的总行数。

2.

3. 第一步:创建

4. CREATE OR REPLACE PROCEDURE pro_3(num out number)

5. IS

6. mynum number;

7. Begin

8. select count(*) into mynum from person;

9. num := mynum;

10.End;

11.或者

12.CREATE OR REPLACE PROCEDURE pro_3(num out number)

13.IS

14.Begin

15. select count(*) into num from person;

16.End;

17.

18.第二步:在sql*plus中执行该过程

19.declare

20.a number;

21.begin

22. pro_3(a);

23. dbms_output.put_line(a);

24.end;

25.

26.第三步:通过JDBC使用存储过程。

27.public void testPro_out()

28. {

29. conn = Tools.getConnection();

30. try {

31. state = conn.prepareCall("{call pro_3(?)}");

32. state.registerOutParameter(1, Types.NUMERIC);

33. state.execute();

34. int num = state.getInt(1);

35. System.out.println(num);

36. } catch (Exception e) {

37. // TODO Auto-generated catch block

38. e.printStackTrace();

39. }

40. }

5、带有IN-OUT类型参数的存储过程的使用

1. 创建:

2. CREATE OR REPLACE PROCEDURE pro_4(num in out number)

3. IS

4. a number := 100;

5. Begin

6. num := a*num;

7. End;

8.

9. 在sql*plus中执行该过程

10.declare

11. a number := 12;

12.begin

13. pro_4(a);

14. dbms_output.put_line(a);

15.end;

相关推荐

崩坏三深渊boss板鸭全攻略:技能分析与应对策略分享
365bet足球网

崩坏三深渊boss板鸭全攻略:技能分析与应对策略分享

📅 2025-07-13 👁️ 8193
用户在线、离线列表 (续)
365教育平台官网

用户在线、离线列表 (续)

📅 2025-07-13 👁️ 9897
国内有哪些”硬核“液晶屏厂家?
365bet足球网

国内有哪些”硬核“液晶屏厂家?

📅 2025-06-29 👁️ 6307
并蒂莲-大连乳胶有限责任公司-并蒂莲避孕套-安全套
28365365体育

并蒂莲-大连乳胶有限责任公司-并蒂莲避孕套-安全套

📅 2025-07-12 👁️ 6954