Copyright © 2004, Oracle. All rights reserved.
Advanced Interface Methods
4-2 Copyright © 2004, Oracle. All rights reserved.
Objectives
After completing this lesson, you should be able to do
the f...
4-3 Copyright © 2004, Oracle. All rights reserved.
Calling External Procedures from PL/SQL
With external procedures, you c...
4-4 Copyright © 2004, Oracle. All rights reserved.
Benefits of External Procedures
• External procedures integrate the str...
4-5 Copyright © 2004, Oracle. All rights reserved.
DECLARE
BEGIN
EXCEPTION
END;
PL/SQL
subprogram
Alias
library
External C...
4-6 Copyright © 2004, Oracle. All rights reserved.
DECLARE
BEGIN
EXCEPTION
END;
PL/SQL
subprogram
1
BEGIN
myproc
2
3
4
Use...
4-7 Copyright © 2004, Oracle. All rights reserved.
The extproc Process
• The extproc process services the execution of
ext...
4-8 Copyright © 2004, Oracle. All rights reserved.
The Listener Process
listener.ora
tnsnames.ora
PL/SQL
subprogram
Alias
...
4-9 Copyright © 2004, Oracle. All rights reserved.
Development Steps for
External C Procedures
1. Create and compile the e...
4-10 Copyright © 2004, Oracle. All rights reserved.
1. Varies for each operating system; consult
documentation.
2. Use the...
4-12 Copyright © 2004, Oracle. All rights reserved.
Development Steps for
External C Procedures
Publish the external proce...
4-13 Copyright © 2004, Oracle. All rights reserved.
The Call Specification
Call specifications enable:
• Dispatching the a...
4-14 Copyright © 2004, Oracle. All rights reserved.
The Call Specification
• Identify the external body within a PL/SQL
pr...
4-15 Copyright © 2004, Oracle. All rights reserved.
• The parameter list:
• The parameter list element:
parameter_list_ele...
4-16 Copyright © 2004, Oracle. All rights reserved.
Publishing an External C Routine
Example
• Publish a C function called...
4-17 Copyright © 2004, Oracle. All rights reserved.
Executing the External Procedure
1. Create and compile the external pr...
4-18 Copyright © 2004, Oracle. All rights reserved.
Overview of Java
The Oracle database can store Java classes and Java
s...
4-19 Copyright © 2004, Oracle. All rights reserved.
How PL/SQL Calls a Java Class Method
libunits
Java class
/home/java/bi...
4-20 Copyright © 2004, Oracle. All rights reserved.
Development Steps for
Java Class Methods
1. Upload the Java file.
2. P...
4-21 Copyright © 2004, Oracle. All rights reserved.
Loading Java Class Methods
1. Upload the Java file.
– At the operating...
4-22 Copyright © 2004, Oracle. All rights reserved.
Publishing a Java Class Method
2. Publish the Java class method by cre...
4-23 Copyright © 2004, Oracle. All rights reserved.
Publishing a Java Class Method
• Example:
• Java method definition:
CR...
4-24 Copyright © 2004, Oracle. All rights reserved.
Executing the Java Routine
1. Upload the Java file.
2. Publish the Jav...
4-25 Copyright © 2004, Oracle. All rights reserved.
Creating Packages for Java Class Methods
CREATE OR REPLACE PACKAGE BOD...
4-26 Copyright © 2004, Oracle. All rights reserved.
Summary
In this lesson, you should have learned how to:
• Use external...
4-27 Copyright © 2004, Oracle. All rights reserved.
Practice Overview
This practice covers the following topics:
• Writing...
Upcoming SlideShare
Loading in...5
×

Plsql les04

117

Published on

Published in: Education, Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
117
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
12
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Plsql les04

  1. 1. Copyright © 2004, Oracle. All rights reserved. Advanced Interface Methods
  2. 2. 4-2 Copyright © 2004, Oracle. All rights reserved. Objectives After completing this lesson, you should be able to do the following: • Execute external C programs from PL/SQL • Execute Java programs from PL/SQL
  3. 3. 4-3 Copyright © 2004, Oracle. All rights reserved. Calling External Procedures from PL/SQL With external procedures, you can make “callouts” and, optionally, “callbacks” through PL/SQL. PL/SQL subprogram DECLARE BEGIN EXCEPTION END; External procedure Java class method C routine
  4. 4. 4-4 Copyright © 2004, Oracle. All rights reserved. Benefits of External Procedures • External procedures integrate the strength and capability of different languages to give transparent access to these routines from within the database. • Extensibility: Provides functionality in the database that is specific to a particular application, company, or technological area • Reusability: Can be shared by all users on a database, as well as moved to other databases or computers, providing standard functionality with limited cost in development, maintenance, and deployment
  5. 5. 4-5 Copyright © 2004, Oracle. All rights reserved. DECLARE BEGIN EXCEPTION END; PL/SQL subprogram Alias library External C Procedure Components Shared library or directory extproc process External procedure User process Listener process
  6. 6. 4-6 Copyright © 2004, Oracle. All rights reserved. DECLARE BEGIN EXCEPTION END; PL/SQL subprogram 1 BEGIN myproc 2 3 4 User process How PL/SQL Calls a C External Procedure 5 6 7 Listener process External procedure extproc process Shared library Alias library
  7. 7. 4-7 Copyright © 2004, Oracle. All rights reserved. The extproc Process • The extproc process services the execution of external procedures for the duration of the session until the user logs off. • Each session uses a different extproc process to execute external procedures. • The listener must be configured to allow the server to be associated to the extproc process. • The listener must be on the same machine as the server.
  8. 8. 4-8 Copyright © 2004, Oracle. All rights reserved. The Listener Process listener.ora tnsnames.ora PL/SQL subprogram Alias library Listener process External procedure Shared library DECLARE BEGIN EXCEPTION END; extproc process
  9. 9. 4-9 Copyright © 2004, Oracle. All rights reserved. Development Steps for External C Procedures 1. Create and compile the external procedure in 3GL. 2. Link the external procedure with the shared library at the operating system level. 3. Create an alias library schema object to map to the operating system’s shared library. 4. Grant execute privileges on the library. 5. Publish the external C procedure by creating the PL/SQL subprogram unit specification, which references the alias library. 6. Execute the PL/SQL subprogram that invokes the external procedure.
  10. 10. 4-10 Copyright © 2004, Oracle. All rights reserved. 1. Varies for each operating system; consult documentation. 2. Use the CREATE LIBRARY statement to create an alias library object. 3. Grant the EXECUTE privilege on the alias library. Development Steps for External C Procedures CREATE OR REPLACE LIBRARY library_name IS|AS 'file_path'; GRANT EXECUTE ON library_name TO user|ROLE|PUBLIC;
  11. 11. 4-12 Copyright © 2004, Oracle. All rights reserved. Development Steps for External C Procedures Publish the external procedure in PL/SQL through call specifications: • The body of the subprogram contains the external routine registration. • The external procedure runs on the same machine. • Access is controlled through the alias library. Library External routine within the procedure
  12. 12. 4-13 Copyright © 2004, Oracle. All rights reserved. The Call Specification Call specifications enable: • Dispatching the appropriate C or Java target procedure • Data type conversions • Parameter mode mappings • Automatic memory allocation and cleanup • Purity constraints to be specified, where necessary, for packaged functions that are called from SQL • Calling Java methods or C procedures from database triggers • Location flexibility
  13. 13. 4-14 Copyright © 2004, Oracle. All rights reserved. The Call Specification • Identify the external body within a PL/SQL program to publish the external C procedure. • The external body contains the external C procedure information. CREATE OR REPLACE FUNCTION function_name (parameter_list) RETURN datatype regularbody | externalbody END; IS|AS LANGUAGE C LIBRARY libname [NAME C_function_name] [CALLING STANDARD C | PASCAL] [WITH CONTEXT] [PARAMETERS (param_1, [param_n]);
  14. 14. 4-15 Copyright © 2004, Oracle. All rights reserved. • The parameter list: • The parameter list element: parameter_list_element [ , parameter_list_element ] { formal_parameter_name [indicator] | RETURN INDICATOR | CONTEXT } [BY REFERENCE] [external_datatype] The Call Specification
  15. 15. 4-16 Copyright © 2004, Oracle. All rights reserved. Publishing an External C Routine Example • Publish a C function called c_tax from a PL/SQL function. • The C prototype: CREATE FUNCTION tax_amt ( x BINARY_INTEGER) RETURN BINARY_INTEGER AS LANGUAGE C LIBRARY c_utility NAME "c_tax"; / int c_tax (int x_val);
  16. 16. 4-17 Copyright © 2004, Oracle. All rights reserved. Executing the External Procedure 1. Create and compile the external procedure in 3GL. 2. Link the external procedure with the shared library at the operating system level. 3. Create an alias library schema object to map to the operating system’s shared library. 4. Grant execute privileges on the library. 5. Publish the external C procedure by creating the PL/SQL subprogram unit specification, which references the alias library. 6. Execute the PL/SQL subprogram that invokes the external procedure.
  17. 17. 4-18 Copyright © 2004, Oracle. All rights reserved. Overview of Java The Oracle database can store Java classes and Java source, which: • Are stored in the database as procedures, functions, or triggers • Run inside the database • Manipulate data
  18. 18. 4-19 Copyright © 2004, Oracle. All rights reserved. How PL/SQL Calls a Java Class Method libunits Java class /home/java/bin/Agent.class 1 3 Java Virtual Machine 2 CREATE JAVA 4
  19. 19. 4-20 Copyright © 2004, Oracle. All rights reserved. Development Steps for Java Class Methods 1. Upload the Java file. 2. Publish the Java class method by creating the PL/SQL subprogram unit specification that references the Java class methods. 3. Execute the PL/SQL subprogram that invokes the Java class method. Publish Execute
  20. 20. 4-21 Copyright © 2004, Oracle. All rights reserved. Loading Java Class Methods 1. Upload the Java file. – At the operating system, use the loadjava command-line utility to load either the Java class file or the Java source file. • To load the Java class file, use: • To load the Java source file, use: – If you load the Java source file, you do not need to load the Java class file. >loadjava –user oe/oe Factorial.class >loadjava –user oe/oe Factorial.java
  21. 21. 4-22 Copyright © 2004, Oracle. All rights reserved. Publishing a Java Class Method 2. Publish the Java class method by creating the PL/SQL subprogram unit specification that references the Java class methods. – Identify the external body within a PL/SQL program to publish the Java class method. – The external body contains the name of the Java class method. {IS | AS} LANGUAGE JAVA NAME 'method_fullname (java_type_fullname [, java_type_fullname]...) [return java_type_fullname]'; CREATE OR REPLACE { PROCEDURE procedure_name [(parameter_list)] | FUNCTION function_name [(parameter_list]...)] RETURN datatype} regularbody | externalbody END;
  22. 22. 4-23 Copyright © 2004, Oracle. All rights reserved. Publishing a Java Class Method • Example: • Java method definition: CREATE OR REPLACE FUNCTION plstojavafac_fun (N NUMBER) RETURN NUMBER AS LANGUAGE JAVA NAME 'Factorial.calcFactorial (int) return int'; public class Factorial { public static int calcFactorial (int n) { if (n == 1) return 1; else return n * calcFactorial (n - 1) ; } }
  23. 23. 4-24 Copyright © 2004, Oracle. All rights reserved. Executing the Java Routine 1. Upload the Java file. 2. Publish the Java class method by creating the PL/SQL subprogram unit specification that references the Java class methods. 3. Execute the PL/SQL subprogram that invokes the Java class method.
  24. 24. 4-25 Copyright © 2004, Oracle. All rights reserved. Creating Packages for Java Class Methods CREATE OR REPLACE PACKAGE BODY Demo_pack AS PROCEDURE plsToJ_InSpec_proc (x BINARY_INTEGER, y VARCHAR2, z DATE) IS LANGUAGE JAVA NAME 'pkg1.class4.J_InSpec_meth (int, java.lang.String, java.sql.Date)'; CREATE OR REPLACE PACKAGE Demo_pack AUTHID DEFINER AS PROCEDURE plsToJ_InSpec_proc (x BINARY_INTEGER, y VARCHAR2, z DATE) END;
  25. 25. 4-26 Copyright © 2004, Oracle. All rights reserved. Summary In this lesson, you should have learned how to: • Use external C routines and call them from your PL/SQL programs • Use Java methods and call them from your PL/SQL programs
  26. 26. 4-27 Copyright © 2004, Oracle. All rights reserved. Practice Overview This practice covers the following topics: • Writing programs to interact with C routines • Writing programs to interact with Java code
  1. Gostou de algum slide específico?

    Recortar slides é uma maneira fácil de colecionar informações para acessar mais tarde.

×