Newsgroup: it.comp.java
Titolo: stored procedures

Io non ho capito ne come si fanno (a livello di codice) ne il perchè
converrebbe usarle invece di fare semplici query al db.
Qualcuno mi sa dire due parole?
Grazie.

 wrote in message
news:isZ78.26762$nI1.8...@twister1.libero.it...


 wrote in message
news:isZ78.26762$nI1.8...@twister1.libero.it...
I motivi per i quali si usano le stored procedure essnzialmente  sono:
performance  e semplicità. Performance perchè sono residenti nel db,
quindi si evita tutto il traffico di rete generalmente accompagnato ad
una qualunque select(o insert o update o delete)Java. E' poi possibile
usare tutte le tecniche di ottimizzazione proprie del linguaggio usato.
Spesso poi semplificano le operazioni SQL, quando queste sono tante
(pensa alla quantita di codice che devi scrivere in più...).
Le store procedure sono essenziali quando si devono gestire operazioni
molto complesse dove le performance sono essenziali.
Spero di esserti stato utile.
Ciao,
Mauro

-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

...

Non sono esperto di sp, quindi in due parole:
Le sp sono strettamente legate al db su cui girano, hanno un
linguaggio proprietario e non uno "standard" come SQL (pur con le
variazioni del caso).
Questo significa che, spostando parte della logica su db, non avrai un
gran che di portabile su altre piattaforme. Ma non va inteso in senso
negativo, è una scelta progettuale. Ad esempio se lavori per una
società che usa oracle, ti chiede un'applicazione con certe (elevate)
prestazioni, allora le sp possono essere una scelta quasi obbligata.
Prova a confrontare il tempo di esecuzione di una query complessa
fatta con prepared statement ed usando un callable statement.
ciao
tityrus

 una qualunque select(o insert o update o delete)Java. E' poi possibile
IMHO le performances sono dovute soprattutto alla velocità di
esecuzione, il traffico di rete ha impatti molto minori e spesso
trascurabili, se intendi quello che intendo io: mandare una query di
10000 caratteri occupa più banda che non i bytes necessari per
invocare la stored...
Ma forse non ci siamo intesi...
tityrus

Con jdk.1.1.7 e driver Thin Oracle 7.3 ( quelli di classes111.zip)
Guarda se in questo pezzo trovi qualcosa di interessante:
--------
---------
import java.sql.*;
import java.awt.*;
import java.awt.event.*;
import java.math.*; //Nuova
import oracle.jdbc.driver.*;
....
....
private void carica(){
		CallableStatement cstmt;
		ResultSet cursor;
                List lstResult = new List();
		try {
			// Use a PL/SQL block to open the cursor
			cstmt = con.prepareCall("begin pk1.f1(?,?); end;");
 
			cstmt.setString(1, txtCCliente.getText());
		 	cstmt.registerOutParameter (2, OracleTypes.CURSOR);
		 	cstmt.execute ();
		 	cursor = ((OracleCallableStatement)cstmt).getCursor (2);
 
		 	String result ="";
			lstResult.removeAll();
			ResultSetMetaData rsmd = cursor.getMetaData();
			int rowcount = 0;
			int colcount = rsmd.getColumnCount();
			while(cursor.next()){
				result="";
				for (int i=1; i <= colcount; i++){
					result+=cursor.getString(i) + " ";
				}
				lstResult.add(result);
				rowcount+=1;
			}
			ScrollPane sp= new ScrollPane(ScrollPane.SCROLLBARS_AS_NEEDED);
			sp.add(lstResult);
			gridbag.setConstraints(sp, c);
			sp.setSize(gr.gettSize());
			p2.add(sp);
		}
 
		catch (Exception e) {
      				System.out.println("Errore2: " + e.toString());
		}
	}//Fine carica
Ciao

 Guarda se in questo pezzo trovi qualcosa di interessante:
Scusa se non capisco, dovrei trovare qualcosa di particolare? 8)
tityrus