SPJs for JDBC programing and Calling it by COBOL
In this note, you will know how to access the MX table by SPJ(Stored Procedure in Java)
1. Java class for stored procedure,
import java.sql.*;import java.math.*;publicclassSpjtest{publicstaticvoid getName(String id,String[] name)throwsSQLException{Connection conn =DriverManager.getConnection("jdbc:sqlmx:");PreparedStatement getNam =conn.prepareStatement("SELECT EC_NAME FROM SOS.ECUI.ECTEST WHERE EC_ID = ?");getNam.setString(1, id);ResultSet rs = getNam.executeQuery();rs.next();name[0]= rs.getString(1);rs.close();conn.close();}}
2. CREATE PROCEDURE in MXCI,
DROP PROCEDURE sos.ecui.getname;?SECTION "CREATE ENDER SPJs"CREATE PROCEDURE sos.ecui.getname(in id VARCHAR(10), OUT name VARCHAR(20))EXTERNAL NAME 'Spjtest.getName'EXTERNAL PATH '/home/ecui/java/SPJs'LANGUAGE JAVAPARAMETER STYLE JAVAREADS SQL DATA;
3. call it,
>>CALL sos.ecui.getname('0000000002',?);*** WARNING[11217]Java execution:Data overflow occurred while retrieving dataat parameter position 2.Value is truncated.NAME--------------------Rocky--- SQL operation completed with warnings.
How to Calling SPJs in COBOL.
1. If you include a CALL statement within a transaction, be aware that the stored procedure in Java (SPJ) invoked by the CALL statement inherits the transaction from the caller, and the SPJ method cannot contain transaction control statements
2. Coding COBOL program.
WORKING-STORAGE SECTION.EXEC SQL BEGIN DECLARE SECTION END-EXEC.03 WS-SPJS-ID PIC X(10).03 WS-SPJS-NAME PIC X(20).PROCEDURE DIVISION.PERFORM TEST-SPJS THRU TEST-SPJS-EXIT.TEST-SPJS.MOVE "0000000001" TO WS-SPJS-ID.MOVE SPACES TO WS-SPJS-NAME.EXEC SQLCALL SOS.ECUI.GETNAME(:WS-SPJS-ID,:WS-SPJS-NAME)END-EXEC.DISPLAY WS-SPJS-NAME.TEST-SPJS-EXIT.EXIT.
3. Compile it.
4. Execute it.
$DATA01.ECSRC 70> RUN ECTEXEEnder.Cui

浙公网安备 33010602011771号