Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Usenet -> c.d.o.misc -> PASSING RECORD TYPE PARAMETERS TO STORED PROCEDURE WITH JAVA
Hi all, I would like to pass a record type as an input/output
parameters to a stored procedure (running on Oracle 8.16 server).
I often see in newsgroups sample code passing ref cursor from jdbc to
databases and what I want appears far more easier but all my tries
failed...
Any ideas ?
Thanks,
Franck
###### The test package: ######
CREATE OR REPLACE PACKAGE XXHP_TEST_PKG IS PROCEDURE get_system_item( system_item_id IN VARCHAR2, my_sys_record IN OUT XXHP_TEST_PKG.SITE_RECORD );
TYPE SITE_RECORD IS RECORD ( MY_STRING VARCHAR2(20), MY_NUMBER NUMBER );
END XXHP_TEST_PKG;
/
CREATE OR REPLACE PACKAGE BODY XXHP_TEST_PKG IS PROCEDURE get_item( system_item_id IN VARCHAR2, my_sys_record IN OUT XXHP_TEST_PKG.SITE_RECORD ) IS
CURSOR tmp_cur IS SELECT MY_STRING, MY_NUMBER FROM XXHP.XXHP_SYSTEM_ITEMS WHERE SYSTEM_ITEM_ID = system_item_id OR (MY_STRING = my_sys_record.MY_STRING AND MY_NUMBER = my_sys_record.MY_NUMBER ); tmp_rec tmp_cur%ROWTYPE; BEGIN OPEN tmp_cur; FETCH tmp_cur INTO tmp_rec; IF tmp_cur%NOTFOUND THEN my_sys_record.MY_STRING := NULL; my_sys_record.MY_NUMBER := NULL; ELSE my_sys_record.MY_STRING := tmp_rec.PFM_PRM_PRODUCT_ID; my_sys_record.MY_NUMBER := tmp_rec.SIT_SITE_ID; END IF; CLOSE tmp_cur; END;
END XXHP_TEST_PKG;
/
###### The jdbc statements: #####
I tried to build a record with registerOutParameter with other
datatypes but I always have a "parameters type conflict" exception
import java.util.*; import java.io.*; import java.sql.*;
public class Test {
public static void main( String[] args ) { try { String url = "jdbc:oracle:thin:@testdb:1731:DEV01"; String user = "toto"; String password = "titi"; Statement stmt; CallableStatement cstmt; Connection con; String query; ResultSet result; DriverManager.registerDriver( new oracle.jdbc.driver.OracleDriver() ); con = DriverManager.getConnection (url, user, password); /******************************************************************************************/ //calling get_system_item( system_item_id IN VARCHAR2, my_sys_record IN OUT XXHP_TEST_PKG.SITE_RECORD ) query = "{CALL XXHP_TEST_PKG.GET_SYSTEM_ITEM(?,?)}"; cstmt = con.prepareCall(query); cstmt.setString(1, "650"); cstmt.registerOutParameter(2, OracleTypes.STRUCT); cstmt.execute(); result = (ResultSet)cstmt.getObject(2); if (result.next ()) { System.out.println( result.getString("MY_STRING") + "\t" + result.getInt("MY_NUMBER") ); } cstmt.close(); /******************************************************************************************/ } catch(Exception e) { System.out.println("exec" + e); } }
} Received on Wed Oct 03 2001 - 09:42:17 CDT
![]() |
![]() |