Udf in db2 UDB

Pagliari Maria Concetta

Udf in db2 UDB
Buon giorno a tutti.



Non so cosa dire a questo mio collega che deve scrivere una udf che legge
dati su un DB2 UDB versione 6.2.4.1 ( purtroppo !!! ) su Windows NT.

Non sono molto esperta in java, e quindi ci siamo basati su esempi trovati
su Internet.

Qualcuno può aiutarmi?

Grazie

Mimma



_____

Da: Bonetti Alessandro
Inviato: venerdì 22 aprile 2005 12.02
A: Pagliari Maria Concetta
Oggetto: Udf in db2



Non riesco in alcun modo a fare una function che vada a leggere una tabella.

Gli esempi che ho trovato non funzionano.

Dev'essere un problema di compatibilità (versione).

Se non metto la clausola "NO SQL" si arrabbia....

Ma se la metto trovo sempre lo statement chiuso, sia che usi Statement che
PreparedStatement.

Non hai qualche esempio Java per sta cavolo di versione di db2 che mi
ritrovo?






CREATE FUNCTION pippo ( VARCHAR(254), VARCHAR(2) )
RETURNS VARCHAR(254)
EXTERNAL NAME 'UdfEcomm!traduci'
LANGUAGE java
PARAMETER STYLE JAVA
FENCED
NO SQL
RETURNS NULL ON NULL INPUT
NO SCRATCHPAD
DETERMINISTIC
;







Questo è il sorgente java





import COM.ibm.db2.app.*;
import java.sql.*;



public class UdfEcomm
{
public static int intx2 ( int valore ) throws SQLException
{
return valore * 2;
}



public static String traduci ( String testoit, String lingua ) throws
SQLException
{
String result = testoit;
if ( !lingua.toLowerCase().equals("it") ) {

try {
Class.forName("COM.ibm.db2.jdbc.app.DB2Driver");
Connection con = DriverManager.getConnection("jdbc:db2:mif_db", "admin",
"ecofri");
PreparedStatement stmt = null;
String sql = "SELECT testolingua FROM lingue WHERE lingua = ? and
testoit = ?";

//Prepare the query with the value of index
stmt = con.prepareStatement( sql );
stmt.setString( 1, lingua );
stmt.setString( 2, testoit );

//Execute query and set output parm
ResultSet rs = stmt.executeQuery(); // qui lo statement risulta
chiuso

if(rs.next()) {
result = rs.getString(1);
}

//Close open resources
if (stmt != null) stmt.close();
if (con != null) con.close();

} catch (Exception e) {
}
}
return result;
}

}




---------------------------------------------------------------------------------
Benvenuti alla lista DB2 User Group Italia.Per annullare l ' iscrizione collegarsi a : http://www.idugdb2-l.org/archives/DB2-UG-Italy.html. Selezionare "Join or Leave the list". Per consultare le IDUG Listserv FAQ collegarsi a :http://www.idugdb2-l.org. L'amministratore della lista DB2 User Group - Italy può essere raggiunto al seguente indirizzo: [login to unmask email] Per sapere le ultime novità sulle conferenze IDUG potete consultare : http://conferences.idug.org/index.cfm

Stefano Dalmiani

Re: Udf in db2 UDB
(in response to Pagliari Maria Concetta)
Mi risultano corretti i passaggi di parametro e le chiamate al DB2.
L'unico dubbio è che non sia aperta la connessione al DB2.
Purtroppo non ho esperienza della UDB6, ma le cose funzionano (anche se in
modo strano e non come specificato da IBM) sulla 5.2 e 7.2.

---------------------------------------------------------------------------------
Benvenuti alla lista DB2 User Group Italia.Per annullare l ' iscrizione collegarsi a : http://www.idugdb2-l.org/archives/DB2-UG-Italy.html. Selezionare "Join or Leave the list". Per consultare le IDUG Listserv FAQ collegarsi a :http://www.idugdb2-l.org. L'amministratore della lista DB2 User Group - Italy può essere raggiunto al seguente indirizzo: [login to unmask email] Per sapere le ultime novità sulle conferenze IDUG potete consultare : http://conferences.idug.org/index.cfm