<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:wfw="http://wellformedweb.org/CommentAPI/"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
>

<channel>
    <title>guide</title>
    <link>http://guide.supereva.it</link>
    <description>Le guide di Supereva</description>
    <pubDate>Thu, 09 Jul 2009 22:58:09 GMT</pubDate>
    <generator>http://lightpress.org/</generator>
    <copyright>2008-2009 Blogo.it</copyright>
    <language>it-it</language>

    
	<item>
	<title>Il linguaggio pl/sql - ottava parte</title>
	<link>http://guide.supereva.it/database/interventi/2003/02/130062.shtml</link>
	<guid isPermaLink="true">http://guide.supereva.it/database/interventi/2003/02/130062.shtml</guid>
	<pubDate>Sat, 22 Feb 2003 00:00:00 GMT</pubDate>
	<dc:creator>654</dc:creator>
    <comments>http://guide.supereva.it/database/interventi/2003/02/130062.shtml#comments</comments>
    <category>mailinglist_newsgroup</category>
    <content:encoded><![CDATA[<p>Oracle 8 e&#8217; un database relazionale ad oggetti (ORDBMS), cioe&#8217; un database relazionale che supporta strutture tipiche della programmazione object oriented.</p>
<p>Prima di addentrarci nella descrizione di queste caratteristiche, vediamo quali sono i vantaggi ottenuti dall&#8217;utilizzo di tali strutture:</p>
<p>Riuso: gli oggetti creati possono essere riutilizzati.<br />
Standardizzazione: utilizzando piu&#8217; volte gli stessi oggetti si vengono a creare degli standard.<br />
Controllo sull&#8217;accesso ai dati: definendo delle funzioni per l&#8217;accesso agli oggetti (sia lettura che scrittura). </p>
<p>Un oggetto e&#8217; un tipo composto definito dall&#8217;utente (quindi non un tipo primitivo, come potrebbe essere un number o un varchar2), che comprende anche le funzioni di accesso, chiamate <b>metodi</b>. Le variabili che ne formano le strutture sono dette <b>attributi</b>.</p>
<p>Come esempio consideriamo l&#8217;oggetto &#8220;automobile&#8221;, esso avra&#8217; una serie di attributi come il colore, la cilindrata, la velocita&#8217;, lo stato (accesa o spenta) etc. Inoltre sara&#8217; necessario definire una serie di operazioni (metodi) che possono essere effettuate sull&#8217;oggetto, come accendere, spegnere, accelerare o frenare.</p>
<p>Esattamente come i package, gli oggetti sono composti da due parti, una pubblica (specification) che rappresenta l&#8217;interfaccia verso le applicazioni ed una privata (body) che racchiude l&#8217;implementazione dei metodi.</p>
<p>E&#8217; necessario dichiarare nelle specifiche prima tutti gli attributi (deve essercene sempre almeno uno, fino ad un max di mille) e poi i metodi. Non e&#8217; possibile definire attributi all&#8217;interno del body, mentre e&#8217; possibile dichiarare un oggetto composto da soli attributi, in questo caso sara&#8217; privo di body.</p>
<p><a href="http://guide.supereva.it/database/interventi/2003/02/130061.shtml">continua&#8230;</a></p>
 
    <p><map name="google_ad_map_20030222000000"><area shape="rect" href="http://imageads.googleadservices.com/pagead/imgclick/20030222000000?pos=0" coords="1,2,367,28"/><area shape="rect" href="http://services.google.com/feedback/abg" coords="384,10,453,23"/></map><img usemap="#google_ad_map_20030222000000" border="0" src="http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&client=ca-pub-6486957077882134&channel=2508919242&output=png&cuid=20030222000000&url=http%3A%2F%2Fguide.supereva.it%2Fdatabase%2Finterventi%2F2003%2F02%2F130062.shtml"/></p>
    ]]></content:encoded>
	<description>Oracle 8 e&amp;#8217; un database relazionale ad oggetti (ORDBMS), cioe&amp;#8217; un database relazionale che supporta strutture tipiche della programmazione object oriented.
Prima di addentrarci nella[...]</description>
	
	</item>
    
	<item>
	<title>Il linguaggio pl/sql - settima parte</title>
	<link>http://guide.supereva.it/database/interventi/2003/02/129465.shtml</link>
	<guid isPermaLink="true">http://guide.supereva.it/database/interventi/2003/02/129465.shtml</guid>
	<pubDate>Sun, 09 Feb 2003 00:00:00 GMT</pubDate>
	<dc:creator>654</dc:creator>
    <comments>http://guide.supereva.it/database/interventi/2003/02/129465.shtml#comments</comments>
    <category>pl_sql</category>
    <content:encoded><![CDATA[<p>Un package e&#8217; una raccolta di oggetti pl/sql come funzioni, procedure, variabili etc.</p>
<p>E&#8217; diviso in due parti che vengono create separatamente: le <b>specifiche</b> (specification) e il <b>corpo</b> (body).</p>
<p>Le specifiche contengono la parte pubblica del package, quindi accessibile a tutte le applicazioni. Il body, invece, nasconde la parte implementativa, le variabili e gli oggetti privati. </p>
<p>Per fare riferimento ad un oggetto (pubblico) che si trova all&#8217;interno del package e&#8217; necessario anteporre al nome dell&#8217;oggetto quello del package, separati da un punto, ad esempio per richiamare la procedura proc dichiarata nelle specifiche del package pack si scrivera&#8217;: pack.proc; un&#8217;altra procedura del package puo&#8217; far riferimento direttamente agli oggetti dello stesso, anche queli definiti solo nel body e quindi privati, semplicemente attraverso il loro nome. </p>
<p>Prima di entrare nel dettaglio della definizione di un package, vediamo quali sono i vantaggi offerti dal loro utilizzo:</p>
<p>Modularita&#8217;: possibilita&#8217; di raggruppare oggetti in relazione fra loro, rendendo cosi&#8217; piu&#8217; facile la lettura e la gestione del codice.<br />
Information Hiding: possibilita&#8217; di distinguere cio&#8217; che e&#8217; pubblico (specification) e cio&#8217; che e&#8217; privato (body). In particolare la parte implementativa, risiedendo nel body, resta nascosta al resto dell&#8217;applicazione.<br />
Progettazione: e&#8217; possibile definire e compilare le specifiche anche in assenza del body. Cio&#8217; e&#8217; utilie in fase di progettazione, in quanto altri oggetti che referenziano il package possono essere compilati senza errore, permettendo cosi&#8217; di posticipare l&#8217;implemetazione del body.<br />
Condivisione: i valori delle variabili e dei cursori definti nel package sono persistenti per tutta la durata della sessione. In questo modo e&#8217; possibile condividere tali valori.<br />
Performance: la prima volta che viene richiamato un oggetto, l&#8217;intero package viene caricato in memoria, le chiamate successive, quindi, non causeranno accessi al disco, velocizzando cosi&#8217; l&#8217;esecuzione. Inoltre Oracle accede agli oggetti di un package in modo piu&#8217; efficiente che se fossero definiti separatamente, ad esempio, se si modifica il corpo di un package non e&#8217; necessario ricompilare tutti gli elementi che lo richiamano (che infatti fanno riferimento alle specifiche) come invece accade se si modifica una funzione singola.</p>
<p><a href="http://guide.supereva.it/database/interventi/2003/02/129464.shtml">continua&#8230;</a></p>
 
    <p><map name="google_ad_map_20030209000000"><area shape="rect" href="http://imageads.googleadservices.com/pagead/imgclick/20030209000000?pos=0" coords="1,2,367,28"/><area shape="rect" href="http://services.google.com/feedback/abg" coords="384,10,453,23"/></map><img usemap="#google_ad_map_20030209000000" border="0" src="http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&client=ca-pub-6486957077882134&channel=2508919242&output=png&cuid=20030209000000&url=http%3A%2F%2Fguide.supereva.it%2Fdatabase%2Finterventi%2F2003%2F02%2F129465.shtml"/></p>
    ]]></content:encoded>
	<description>Un package e&amp;#8217; una raccolta di oggetti pl/sql come funzioni, procedure, variabili etc.
E&amp;#8217; diviso in due parti che vengono create separatamente: le specifiche (specification) e il corpo[...]</description>
	
	</item>
    
	<item>
	<title>Il linguaggio pl/sql - sesta parte</title>
	<link>http://guide.supereva.it/database/interventi/2002/09/117472.shtml</link>
	<guid isPermaLink="true">http://guide.supereva.it/database/interventi/2002/09/117472.shtml</guid>
	<pubDate>Sun, 08 Sep 2002 00:00:00 GMT</pubDate>
	<dc:creator>654</dc:creator>
    <comments>http://guide.supereva.it/database/interventi/2002/09/117472.shtml#comments</comments>
    <category>pl_sql</category>
    <content:encoded><![CDATA[<p>Quando si scrive del codice, a prescindere dal linguaggio utilizzato, si tende a dividere grossi blocchi di istruzioni in moduli piu&#8217; piccoli, per diversi motivi, come ad esempio una migliore leggibilita&#8217;, possibilita&#8217; di riutilizzare il codice scritto, maggiore manutenibilita&#8217; etc.</p>
<p>Il linguaggio pl/sql offre diverse strutture per modularizzare il codice, oltre ai blocchi anonimi visti in precedenza esistono:</p>
<p><b>Procedure</b><br />
<b>Funzioni</b><br />
<b>Package</b></p>
<p>Procedure e funzioni non sono altro che blocchi anonimi con un nome ai quali e&#8217; possibile passare valori in input sotto forma di parametri e che, nel caso delle funzioni, restituiscono anche un valore in output.</p>
<p>I package raggruppano funzioni e procedure.</p>
<p>Prima di descrivere in dettaglio le tre strutture vediamo le diverse tipologie di <b>parametri</b> che possono essere passati alle funzioni e alle procedure, intesi non come datatype (numerici, stringhe o date) ma come modalita&#8217; di utilizzo del parametro da parte della procedura.</p>
<p>Le tre diverse modalita&#8217; sono:</p>
<p><b>IN</b></p>
<p><b>OUT</b></p>
<p><b>IN OUT</b></p>
<p>I parametri di tipo IN permettono di passare un valore al modulo che lo puo&#8217; utilizzare ma non modificare, si tratta in pratica di un valore costante. E&#8217; la modalita&#8217; di default.</p>
<p>I parametri di tipo OUT, sono invece parametri di solo output, quindi il loro valore non puo&#8217; essere utilizzato dal modulo ma vengono usati per restituire un valore al chiamante. E&#8217; come se si trattasse di variabili non inizializzate utilizzate all&#8217;interno del modulo e restituite da quest&#8217;ultimo valorizzate.</p>
<p>I parametri IN OUT combinano le caratteristiche dei due, quindi possono essere utilizzati sia come input che output.</p>
<p>Come esempio consideriamo tre variabili numeriche x, y e z ed una procedura f con tre parametri numerici, il primo di tipo IN,  il secondo OUT e  il terzo IN OUT:</p>
<p>x := 1;</p>
<p>y := 2;</p>
<p>z := 3;</p>
<p>f(x,y,z);</p>
<p>f(1,y,z);</p>
<p>f(x,2,3); &#8212; errore!</p>
<p>L&#8217;ultima istruzione richiama la funzione passando x in corrispondenza del parametro IN (e questo e&#8217; ok, in quanto il valore di x puo&#8217; essere usato all&#8217;interno della funzione senza pero&#8217; essere modificato) mentre i due parametri successivi che sono OUT e IN OUT devono essere variabili in modo da contenere il valore di ritorno.</p>
<p>Le altre due chiamate (che sono equivalenti) sono corrette. Nella prima, ad esempio, sono passate tre variabili: x di solo input, y di solo output (di conseguenza l&#8217;inizializzazione a 2 viene persa al momento della chiamata) e z che vale ancora 3 al&#8217;interno della funzione.</p>
<p><a href="	http://guide.supereva.it/database/interventi/2002/09/117473.shtml">continua&#8230;</a></p>
 
    <p><map name="google_ad_map_20020908000000"><area shape="rect" href="http://imageads.googleadservices.com/pagead/imgclick/20020908000000?pos=0" coords="1,2,367,28"/><area shape="rect" href="http://services.google.com/feedback/abg" coords="384,10,453,23"/></map><img usemap="#google_ad_map_20020908000000" border="0" src="http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&client=ca-pub-6486957077882134&channel=2508919242&output=png&cuid=20020908000000&url=http%3A%2F%2Fguide.supereva.it%2Fdatabase%2Finterventi%2F2002%2F09%2F117472.shtml"/></p>
    ]]></content:encoded>
	<description>Quando si scrive del codice, a prescindere dal linguaggio utilizzato, si tende a dividere grossi blocchi di istruzioni in moduli piu&amp;#8217; piccoli, per diversi motivi, come ad esempio una migliore[...]</description>
	
	</item>
    
	<item>
	<title>Il linguaggio pl/sql - quinta parte</title>
	<link>http://guide.supereva.it/database/interventi/2002/08/116567.shtml</link>
	<guid isPermaLink="true">http://guide.supereva.it/database/interventi/2002/08/116567.shtml</guid>
	<pubDate>Thu, 29 Aug 2002 00:00:00 GMT</pubDate>
	<dc:creator>654</dc:creator>
    <comments>http://guide.supereva.it/database/interventi/2002/08/116567.shtml#comments</comments>
    <category>pl_sql</category>
    <content:encoded><![CDATA[<p>In pl/sql tutti gli errori sono gestiti come eccezioni; al verificarsi di un errore l&#8217;esecuzione viene interrotta e il controllo passa alla sezione exception, di gestione delle eccezioni, del blocco in cui si e&#8217; verificata l&#8217;eccezione. Quando si verifica un&#8217;eccezione non e&#8217; piu&#8217; possibile tornare al punto in cui e&#8217; stato generato l&#8217;errore.</p>
<p>Questa architettura permette di centralizzare la gestione degli errori e quindi uno stesso errore, che puo&#8217; verificarsi in punti differenti del codice, viene gestito in un unico punto evitando cosi&#8217; al programmatore di andare a ricercare tutti i casi in cui l&#8217;errore potrebbe verificarsi e gestirlo ogni volta. In questo modo diminuisce drasticamente la quantita&#8217; di codice da scrivere per gestire i malfunzionamenti, riducendo la probabilita&#8217; di introduzione di ulteriori errori e facilitando altresi&#8217; la gestione di nuovi errori.</p>
<p>La sintassi: </p>
<p>EXCEPTION</p>
<p>WHEN nome_eccezione1 [ OR nome_eccezione2 &#8230; ] </p>
<p>THEN </p>
<p>istruzioni </p>
<p>&#8230;.. </p>
<p>WHEN OTHERS </p>
<p>THEN </p>
<p>istruzioni </p>
<p>END; </p>
<p>Se si verifica un&#8217;eccezione fra quelle indicate nella clausola WHEN vengono eseguite le istruzioni corrispondenti indicate dalla clausola THEN.</p>
<p>La clausola WHEN OTHERS (opzionale) gestisce qualsiasi altra applicazione no direttamente gestita dalle clausole precedenti.</p>
<p>Un&#8217;eccezione non gestita in un blocco viene passata all&#8217;eventuale blocco che lo contiene e alla fine, se non e&#8217; stato gestito, all&#8217;utente.</p>
<p><a href="http://guide.supereva.it/database/interventi/2002/08/116568.shtml">continua&#8230;</a></p>
 
    <p><map name="google_ad_map_20020829000000"><area shape="rect" href="http://imageads.googleadservices.com/pagead/imgclick/20020829000000?pos=0" coords="1,2,367,28"/><area shape="rect" href="http://services.google.com/feedback/abg" coords="384,10,453,23"/></map><img usemap="#google_ad_map_20020829000000" border="0" src="http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&client=ca-pub-6486957077882134&channel=2508919242&output=png&cuid=20020829000000&url=http%3A%2F%2Fguide.supereva.it%2Fdatabase%2Finterventi%2F2002%2F08%2F116567.shtml"/></p>
    ]]></content:encoded>
	<description>In pl/sql tutti gli errori sono gestiti come eccezioni; al verificarsi di un errore l&amp;#8217;esecuzione viene interrotta e il controllo passa alla sezione exception, di gestione delle eccezioni, del[...]</description>
	
	</item>
    
	<item>
	<title>Il linguaggio pl/sql - quarta parte</title>
	<link>http://guide.supereva.it/database/interventi/2002/07/112152.shtml</link>
	<guid isPermaLink="true">http://guide.supereva.it/database/interventi/2002/07/112152.shtml</guid>
	<pubDate>Tue, 16 Jul 2002 00:00:00 GMT</pubDate>
	<dc:creator>654</dc:creator>
    <comments>http://guide.supereva.it/database/interventi/2002/07/112152.shtml#comments</comments>
    <category>pl_sql</category>
    <content:encoded><![CDATA[<p>Il codice pl/sql e&#8217; organizzato in blocchi, le procedure e le funzioni sono blocchi ai quali e&#8217; stato assegnato un nome; altrimenti il blocco viene detto anonimo.</p>
<p>Un blocco e&#8217; suddiviso in tre sezioni:</p>
<p>dichiarazioni:</p>
<p>Contiene le dichiarazioni delle variabili, inizia con la parola chiave <b>declare</b> e termina con l&#8217;inizio della sezione successiva.<br />
istruzioni:</p>
<p>Contiene le istruzioni, inizia con la parola chiave <b>begin</b> e termina con l&#8217;inizio della sezione successiva.<br />
eccezioni:</p>
<p>Contiene la parte di gestione degli errori, inizia con <b>exception</b> e termina con <b>end</b> che chiude il blocco.</p>
<p>Esempio di blocco anonimo:</p>
<p>DECLARE</p>
<p>&#8211; variabile numerica </p>
<p>var1 NUMBER;</p>
<p>BEGIN</p>
<p>&#8211; lettura di un dato da db </p>
<p>SELECT x INTO var1 FROM tabella</p>
<p>WHERE &#8230;..;</p>
<p>&#8211; test sul contenuto della var1</p>
<p>IF var1 > 0 THEN  </p>
<p>&#8230;&#8230;&#8230;..</p>
<p>EXCEPTION </p>
<p>&#8211; non ci sono dati</p>
<p>WHEN NO_DATA_FOUND THEN &#8230;&#8230;</p>
<p>END;</p>
<p>La parte dichiarativa e quella di gestione delle eccezioni sono opzionali.</p>
<p>Nella parte dichiarativa e&#8217; stata definita una variabile di tipo numerico per poi utilizzarla nella parte di esecuzione. Nella zona delle eccezioni e&#8217; stato gestita l&#8217;eventualita&#8217; che la select non estragga dati.</p>
<p>Sono stati inseriti alcuni commenti, utilizzando &#8216;<b>&#8211;</b>&#8216; che rende tutta la riga un commento. Per commentare piu&#8217; righe si utilizza la stessa notazione del C: &#8216;<b>/*  */</b>&#8216;. </p>
<p><a href="http://guide.supereva.it/database/interventi/2002/07/112154.shtml">continua&#8230;</a></p>
 
    <p><map name="google_ad_map_20020716000000"><area shape="rect" href="http://imageads.googleadservices.com/pagead/imgclick/20020716000000?pos=0" coords="1,2,367,28"/><area shape="rect" href="http://services.google.com/feedback/abg" coords="384,10,453,23"/></map><img usemap="#google_ad_map_20020716000000" border="0" src="http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&client=ca-pub-6486957077882134&channel=2508919242&output=png&cuid=20020716000000&url=http%3A%2F%2Fguide.supereva.it%2Fdatabase%2Finterventi%2F2002%2F07%2F112152.shtml"/></p>
    ]]></content:encoded>
	<description>Il codice pl/sql e&amp;#8217; organizzato in blocchi, le procedure e le funzioni sono blocchi ai quali e&amp;#8217; stato assegnato un nome; altrimenti il blocco viene detto anonimo.
Un blocco[...]</description>
	
	</item>
    
	<item>
	<title>Il linguaggio pl/sql - terza parte</title>
	<link>http://guide.supereva.it/database/interventi/2002/04/100373.shtml</link>
	<guid isPermaLink="true">http://guide.supereva.it/database/interventi/2002/04/100373.shtml</guid>
	<pubDate>Sun, 07 Apr 2002 00:00:00 GMT</pubDate>
	<dc:creator>654</dc:creator>
    <comments>http://guide.supereva.it/database/interventi/2002/04/100373.shtml#comments</comments>
    <category>pl_sql</category>
    <content:encoded><![CDATA[<p>Prima di poter utilizzare una qualsiasi variabile, in pl/sql, e&#8217; necessario dichiararla (eccezion fatta per le variabili indice di un ciclo for) e tutte le dichiarazioni devono essere fatte all&#8217;interno della parte dichiarativa di un blocco, una procedura, una funzione o un package .</p>
<p>La dichiarazione permette al programmatore di definire il nome e il tipo e al linguaggio di allocare lo spazio per contenerla.</p>
<p>La sintassi e&#8217;: </p>
<p>nome_variabile tipo [eventuale inizializzazione]; </p>
<p>esempio: </p>
<p>x number;</p>
<p>y varchar2(10);</p>
<p>z date;</p>
<p>E&#8217; possibile assegnare un valore di default (nel caso di una costante e&#8217; obbligatorio definire il valore) seguendo una delle due sintassi possibili: </p>
<p>nome_variabile tipo := valore;  </p>
<p>nome_variabile tipo DEFAULT valore; </p>
<p>Vediamo alcuni esempi:</p>
<p>x number := 0; </p>
<p>pi CONSTANT number := 3.14; </p>
<p>y number(1) := ROUND(pi); </p>
<p>Il primo inizializza la variabile a zero, il secondo dichiara una costante e quindi deve obbligatoriamente valorizzarla, il terzo utilizza il valore restituito dalla funzione round.</p>
<p>Esiste anche la clausola <b>NOT NULL</b>, che impone che la variabile non possa essere nulla:</p>
<p>nome VARCHAR2(30) NOT NULL DEFAULT &#8216;PIPPO&#8217;; </p>
<p>anche in questo caso la variabile deve obbligatoriamente essere inizializzata.</p>
<p><b>NULL</b> e&#8217; un valore indefinito, quindi il confronto fra due variabili nulle e&#8217; sempre falso e la somma di un numero con un null e&#8217; null (e non zero).</p>
<p><a href="http://guide.supereva.it/database/interventi/2002/04/100428.shtml">continua</a></p>
 
    <p><map name="google_ad_map_20020407000000"><area shape="rect" href="http://imageads.googleadservices.com/pagead/imgclick/20020407000000?pos=0" coords="1,2,367,28"/><area shape="rect" href="http://services.google.com/feedback/abg" coords="384,10,453,23"/></map><img usemap="#google_ad_map_20020407000000" border="0" src="http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&client=ca-pub-6486957077882134&channel=2508919242&output=png&cuid=20020407000000&url=http%3A%2F%2Fguide.supereva.it%2Fdatabase%2Finterventi%2F2002%2F04%2F100373.shtml"/></p>
    ]]></content:encoded>
	<description>Prima di poter utilizzare una qualsiasi variabile, in pl/sql, e&amp;#8217; necessario dichiararla (eccezion fatta per le variabili indice di un ciclo for) e tutte le dichiarazioni devono essere fatte[...]</description>
	
	</item>
    
	<item>
	<title>Il linguaggio pl/sql - seconda parte</title>
	<link>http://guide.supereva.it/database/interventi/2002/04/100142.shtml</link>
	<guid isPermaLink="true">http://guide.supereva.it/database/interventi/2002/04/100142.shtml</guid>
	<pubDate>Wed, 03 Apr 2002 00:00:00 GMT</pubDate>
	<dc:creator>654</dc:creator>
    <comments>http://guide.supereva.it/database/interventi/2002/04/100142.shtml#comments</comments>
    <category>pl_sql</category>
    <content:encoded><![CDATA[<p><b>Tipi di dati</b></p>
<p>Il linguaggio fornisce un&#8217;esauriente quantita&#8217; di tipi di dati scalari (atomici) e composti.</p>
<p>I primi, che analizzeremo in questo intervento, possono essere suddivisi in quattro categorie:</p>
<p>Numerici<br />
Stringhe<br />
Booleani<br />
Date</p>
<p><b>Numerici</b></p>
<p>Possono essere a loro volta suddivisi in interi e decimali. Per quanto riguarda gli interi i tipi a disposizione sono:</p>
<p>BINARY_INTEGER </p>
<p>Permettono di memorizzare interi con segno, il range varia da -231 + 1 a 231 - 1.<br />
POSITIVE e NATURAL </p>
<p>Sono entrambi sottotipi dei binary_integer. I primi vanno da 1 a 231 i secondi da 1 a 231.<br />
INTEGER </p>
<p>SMALLINT </p>
<p>INT </p>
<p>Nel caso dei decimali i tipi a disposizione sono:</p>
<p>NUMBER<br />
FLOAT<br />
DEC<br />
DECIMAL<br />
DOUBLE PRECISION<br />
NUMERIC<br />
REAL<br />
PLS_INTEGER (a partire dalla versione 2.3 di pl/sql)</p>
<p>I number vanno da 1.0E-129 a 9.999E125. Gli altri sono sottotipi dei number.</p>
<p>Una variabile di tipo number si dichiara specificando la precisione e la scala:</p>
<p>number(precisione,scala);</p>
<p>la precisione rappresenta il numero totale di cifre mentre la scala le cifre decimali.</p>
<p>Quindi per rappresentare il numero 123.34 devo definire una variabile di tipo number(5,2). Se la scala non e&#8217; sufficiente a contenere i decimali il numero viene arrotondato.</p>
<p>La scala puo&#8217; anche essere un numero negativo, in questo caso l&#8217;arrotondamento avviene alla sinistra della virgola, quindi il numero 12345 memorizzato in un number(5,-2) diventerebbe 12300.</p>
<p>La scala puo&#8217; anche essere superiore della precisione che in questo caso definisce il numero di cifre, tutte decimali, la differenza fra i due valori determina il numero di zeri con cui deve iniziare la cifra memorizzata in questo tipo. Ad esempio number(3,5) puo&#8217; contenere la cifra .00123 ma non .0123 o .123 etc.</p>
<p><a href="http://guide.supereva.it/database/interventi/2002/04/100141.shtml">continua</a></p>
 
    <p><map name="google_ad_map_20020403000000"><area shape="rect" href="http://imageads.googleadservices.com/pagead/imgclick/20020403000000?pos=0" coords="1,2,367,28"/><area shape="rect" href="http://services.google.com/feedback/abg" coords="384,10,453,23"/></map><img usemap="#google_ad_map_20020403000000" border="0" src="http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&client=ca-pub-6486957077882134&channel=2508919242&output=png&cuid=20020403000000&url=http%3A%2F%2Fguide.supereva.it%2Fdatabase%2Finterventi%2F2002%2F04%2F100142.shtml"/></p>
    ]]></content:encoded>
	<description>Tipi di dati
Il linguaggio fornisce un&amp;#8217;esauriente quantita&amp;#8217; di tipi di dati scalari (atomici) e composti.
I primi, che analizzeremo in questo intervento, possono essere suddivisi in[...]</description>
	
	</item>
    
	<item>
	<title>Il linguaggio pl/sql - prima parte</title>
	<link>http://guide.supereva.it/database/interventi/2002/03/98866.shtml</link>
	<guid isPermaLink="true">http://guide.supereva.it/database/interventi/2002/03/98866.shtml</guid>
	<pubDate>Sat, 23 Mar 2002 00:00:00 GMT</pubDate>
	<dc:creator>654</dc:creator>
    <comments>http://guide.supereva.it/database/interventi/2002/03/98866.shtml#comments</comments>
    <category>pl_sql</category>
    <content:encoded><![CDATA[<p>Il pl/sql (Procedural Language extensions to SQL) non e&#8217; un vero e proprio linguaggio di programmazione in quanto si trova solo integrato in altri prodotti, come i database Oracle o applicazioni client come Forms e Reports.</p>
<p>Come si evince dal nome, il linguaggio e&#8217; un&#8217;estensione di sql, al quale aggiunge una serie di costrutti tipici dei linguaggi di programmazione permettendo cosi&#8217; di combinare i due tipi di istruzioni, come nella porzione di codice che segue:</p>
<p>IF operazione = &#8216;DELETE&#8217; </p>
<p>THEN DELETE FROM tabella WHERE &#8230;.; </p>
<p>ELSIF operazione = &#8216;INSERT&#8217; </p>
<p>THEN INSERT INTO tabella &#8230;. ; </p>
<p>END IF; </p>
<p>che permette di condizionare l&#8217;esecuzione di un&#8217; istruzione sql al valore di una variabile.</p>
<p>Esistono diverse versioni del linguaggio, in questa introduzione mi riferiro&#8217; alla versione 2, disponibile gia&#8217; dalla release 7.0 di Oracle Server per poi, successivamente, descrivere le novita&#8217; introdotte con le versioni successive.</p>
<p>Le caratteristiche principali del linguaggio pl/sql sono:</p>
<p>Integrazione con SQL<br />
Strutture di controllo<br />
Aggiunta di nuovi tipi a quelli di sql e tipi definiti dall&#8217;utente<br />
Possibilita&#8217; di definire tipi record e tavola<br />
Definizione di cursori per l&#8217;accesso ai dati<br />
Modularizzazione del codice<br />
Definizione di procedure, funzioni e packages<br />
Built-in per la conversione dei dati, la gestione delle date, delle stringhe e dei numeri<br />
Avanzata gestione degli errori<br />
Possibilita&#8217; di utilizzare funzioni all&#8217;interno di istruzioni sql<br />
Sql dinamico<br />
PL/SQL wrapper<br />
Job scheduling<br />
Accesso a file su disco</p>
<p>Con la versione 8, che succede alla 2.3, sono state introdotte le seguenti caratteristiche:</p>
<p>Supporto all&#8217;object-oriented<br />
Advanced Queueing Facility<br />
VARRAY<br />
Object views<br />
Richiamo di procedure esterne<br />
Supporto dei LOB</p>
<p>Concludo ricordando che uno dei grossi vantaggi del pl/sql e&#8217; dato dal fatto di essere presente sia sul server che sul client (ad esempio la suite Developer/2000), permettendo cosi&#8217; di scrivere il codice usando sempre lo stesso linguaggio (anche se lato client ha delle limitazioni che vedremo), potendo inoltre decidere ad esempio di spostare una procedura sul server per poterla riutilizzare in diverse applicazioni.</p>
 
    <p><map name="google_ad_map_20020323000000"><area shape="rect" href="http://imageads.googleadservices.com/pagead/imgclick/20020323000000?pos=0" coords="1,2,367,28"/><area shape="rect" href="http://services.google.com/feedback/abg" coords="384,10,453,23"/></map><img usemap="#google_ad_map_20020323000000" border="0" src="http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&client=ca-pub-6486957077882134&channel=2508919242&output=png&cuid=20020323000000&url=http%3A%2F%2Fguide.supereva.it%2Fdatabase%2Finterventi%2F2002%2F03%2F98866.shtml"/></p>
    ]]></content:encoded>
	<description>Il pl/sql (Procedural Language extensions to SQL) non e&amp;#8217; un vero e proprio linguaggio di programmazione in quanto si trova solo integrato in altri prodotti, come i database Oracle o[...]</description>
	
	</item>
    
	<item>
	<title>Installazione di Oracle 9i EE su Red Hat Linux 7.1 quinta parte</title>
	<link>http://guide.supereva.it/database/interventi/2002/03/97924.shtml</link>
	<guid isPermaLink="true">http://guide.supereva.it/database/interventi/2002/03/97924.shtml</guid>
	<pubDate>Sun, 17 Mar 2002 00:00:00 GMT</pubDate>
	<dc:creator>654</dc:creator>
    <comments>http://guide.supereva.it/database/interventi/2002/03/97924.shtml#comments</comments>
    <category>oracle</category>
    <content:encoded><![CDATA[<p>Si conclude questa serie di interventi con la descrizione di alcuni problemi che potrebbero verificarsi in fase d&#8217;installazione e la relative soluzioni possibili.</p>
<p>Due file che riportano informazioni utili durante l&#8217;installazione sono:</p>
<p>/tmp/OraInstall </p>
<p>$ORACLE_HOME/install/make.log  </p>
<p>Nel caso in cui l&#8217;installazione non andasse a buon fine e&#8217; consigliabile rimuovere alcuni file prima di riprovare: </p>
<p>rm -rf /etc/oraInst.loc /etc/oratab /tmp/OraInstall </p>
<p>rm -rf $ORACLE_BASE/* </p>
<p>Conviene anche ripulire la directory /tmp da tutti i file legati all&#8217;installazione. </p>
<p>Un errore che si verifica sovente e&#8217; legato all&#8217;installazione grafica ed in particolare alla variabile DISPLAY non correttamente impostata: </p>
<p>Xlib: connection to &#8220;:0.0&#8243; refused by server </p>
<p>per correggere il problema digitate: </p>
<p>export DISPLAY = nomeserver:0.0 </p>
<p>Altro errore di questo tipo e&#8217;: </p>
<p>Xlib: Client is not authorized to connect to Server </p>
<p>che si risolve digitando:</p>
<p>xhost +nomeserver  </p>
<p>Se il server non e&#8217; particolarmente dotato di ram e di spazio di swap in alcuni momenti il sistema puo&#8217; sembrare bloccato, si tratta solo di avere pazienza ed aspettare. </p>
<p>Durante l&#8217;installazione e&#8217; possibile che vengano effettuate delle compilazioni, accertatevi quindi che sul sistema siano installati i seguenti package: cpp, egcs, egcs-c++, glibc-devel, kernel-headers.</p>
<p>Per qualsisi altro problema <a href="http://guide.supereva.it/database/scrivimi.shtml">scrivetemi</a>.</p>
 
    <p><map name="google_ad_map_20020317000000"><area shape="rect" href="http://imageads.googleadservices.com/pagead/imgclick/20020317000000?pos=0" coords="1,2,367,28"/><area shape="rect" href="http://services.google.com/feedback/abg" coords="384,10,453,23"/></map><img usemap="#google_ad_map_20020317000000" border="0" src="http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&client=ca-pub-6486957077882134&channel=2508919242&output=png&cuid=20020317000000&url=http%3A%2F%2Fguide.supereva.it%2Fdatabase%2Finterventi%2F2002%2F03%2F97924.shtml"/></p>
    ]]></content:encoded>
	<description>Si conclude questa serie di interventi con la descrizione di alcuni problemi che potrebbero verificarsi in fase d&amp;#8217;installazione e la relative soluzioni possibili.
Due file che riportano[...]</description>
	
	</item>
    
	<item>
	<title>Newsgroup</title>
	<link>http://guide.supereva.it/database/interventi/2002/03/97939.shtml</link>
	<guid isPermaLink="true">http://guide.supereva.it/database/interventi/2002/03/97939.shtml</guid>
	<pubDate>Sun, 17 Mar 2002 00:00:00 GMT</pubDate>
	<dc:creator>654</dc:creator>
    <comments>http://guide.supereva.it/database/interventi/2002/03/97939.shtml#comments</comments>
    <category>mailinglist_newsgroup</category>
    <content:encoded><![CDATA[<p>In italiano:</p>
<p><a href="http://www.news.nic.it/manif/it.comp.appl.access.txt"> it.comp.appl.access</a></p>
<p>Il DBMS Microsoft Access<br />
<a href="http://www.news.nic.it/manif/it.comp.software.database.txt"> it.comp.software.database</a></p>
<p>La gestione di database<br />
<a href="http://www.news.nic.it/manif/it.comp.www.php.txt"> it.comp.www.php</a></p>
<p>Il linguaggio di programmazione PHP  </p>
<p>In inglese:</p>
<p>Oracle:</p>
<p><a href="news:comp.databases.oracle.misc "> comp.databases.oracle.misc</a><br />
<a href="news:comp.databases.oracle.tools"> comp.databases.oracle.tools</a><br />
<a href="news:comp.databases.oracle.server"> comp.databases.oracle.server</a><br />
<a href="news:comp.databases.oracle.marketplace"> comp.databases.oracle.marketplace</a></p>
 
    <p><map name="google_ad_map_20020317000000"><area shape="rect" href="http://imageads.googleadservices.com/pagead/imgclick/20020317000000?pos=0" coords="1,2,367,28"/><area shape="rect" href="http://services.google.com/feedback/abg" coords="384,10,453,23"/></map><img usemap="#google_ad_map_20020317000000" border="0" src="http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&client=ca-pub-6486957077882134&channel=2508919242&output=png&cuid=20020317000000&url=http%3A%2F%2Fguide.supereva.it%2Fdatabase%2Finterventi%2F2002%2F03%2F97939.shtml"/></p>
    ]]></content:encoded>
	<description>In italiano:
 it.comp.appl.access
Il DBMS Microsoft Access
 it.comp.software.database
La gestione di database
 it.comp.www.php
Il linguaggio di programmazione PHP  
In inglese:
Oracle:
[...]</description>
	
	</item>
    

</channel>
</rss>
