Skip to main content
db2_sql

Tool grafico per SQL su DB2 AS400: DBEdit

db2_sqlDBEdit è un ottimo tool grafico per eseguire query SQL su vari database tra cui il DB2 for i di AS400 (IBMi).

DBEdit è un ottimo tool grafico per eseguire query SQL su vari database tra cui il DB2 for i di AS400 (IBMi).

Essendo sviluppato in Java richiede che sul PC sia installata la JVM (Java Virtual Machine).

Altri database con cui può lavorare oltre al DB2 for i sono:

  • Oracle
  • DB2 LUW (Linux, Unix, Windows)
  • MySQL
  • SQLite
  • HSQLDB
  • H2
  • Derby
  • Microsoft SQL Server
  • …e qualunque altro DB di cui si abbia il driver JDBC

Approfondisci

twittergoogle_pluslinkedinmailby feather
db2 sql

Performance di DB2 SQL complesse: CTE

db2 sqlLa potenza elaborativa del DB2 SQL for i su IBMi (AS/400) ha ormai raggiunto livelli notevoli e offre spesso più strade per raggiungere lo stesso risultato. Spesso, però, hanno performance diverse a seconda della tecnica utilizzata. In quest’articolo voglio mostrare la tecnica delle CTE (Common Table Expression) che, grazie alla WITH clause, permettono di gestire richieste complesse raggruppando vari step in un unica richiesta multi-step.

I vantaggi offerti sono molteplici, la leggibilità dell’istruzione ma anche e soprattutto un vantaggio prestazionale, perchè:

  • si evita di scrivere su disco tabelle intermedie negli step precedenti in quanto eventuali tabelle temporanee vengono gestite solo in RAM
  • il motore DB2 SQL non vede un’istruzione alla volta ma tutte insieme e questo permette al suo ottimizzatore di calcolare la soluzione migliore per raggiungere il risultato finale

Per capire meglio conviene sempre utilizzare degli esempi.

Approfondisci

twittergoogle_pluslinkedinmailby feather
db2_sql

Funzione SQL DB2 per calcolo anno – settimana

db2_sqlNel DB2 SQL for i (AS/400) esistono funzioni che permettono di calcolare il numero della settimana di una certa data e sono WEEK e WEEK_ISO.
La principali differenze tra loro sono che WEEK considera che la settimana inizia con Domenica e l’1 Gennaio è sempre parte della PRIMA SETTIMANA dell’anno, mentre WEEK_ISO considera che la settimana inizia con Lunedì e la PRIMA SETTIMANA dell’anno è sempre la prima che contiene Giovedì, quindi ad esempio, se Il primo Giovedì dell’anno capita il 6 gennaio significa che la prima settimana è quella che inizia con lunedì 3 gennaio mentre Domenica 1 e Sabato 2 fanno parte dell’ultima settimana dell’anno precedente.

Approfondisci

twittergoogle_pluslinkedinmailby feather
db2 sql

SQL dinamico in programmi RPG ILE su AS400

db2 sqlIl linguaggio SQL è estremamente potente con qualunque database e quindi anche sul DB2 dell’AS/400.

Spesso viene utilizzato con istruzioni statiche ovvero legate a tabelle e criteri di selezione o ordinamento predefiniti.

A volte può essere comodo fare un programma RPG per eseguire istruzioni SQL completamente dinamiche ricevendole in input.

L’esempio seguente mostra le istruzioni da inserire in un programma RPG per eseguire una qualunque istruzione SQL ricevuta in INPUT (variabile SQL_INPUT) e generare il risultato in una nuova tabella.
Approfondisci

twittergoogle_pluslinkedinmailby feather
db2 sql

Esempi di DB2 SQL per AS/400

db2 sqlIn questo articolo elenco esempi di DB2 SQL per AS400 (anche conosciuto come IBMiiSeries, …).

L’obbiettivo è avere un riferimento unico per l’utilizzo di DB2 SQL aggiornando l’articolo ogni volta che ho esempi da documentare.

Di seguito aggiungo i link ad altri articoli relativi al DB2 SQL su IBMi che trovo utili ed interessanti:

Gestione di campi (colonne) ad incremento automatico nelle tabelle del DB2 for IBMi

Oggetti SEQUENCE in DB2 SQL per AS400

Funzione DB2 SQL AS400 per calcolare anno-settimana di una data

Prestazioni di istruzioni DB2 SQL AS400 complesse utilizzando le Common Table Expression

Clausola HAVING

Permette di fare test sul risultato di una funzione (sommatoria, conteggio, …).

Esempio, estrarre dalla tabella dei movimenti contabili solo i codici dei clienti che quest’anno hanno movimenti in DARE superiore a 50.000 euro:

SELECT clifo, sum(impeu) FROM moaz200f
WHERE fclfo ='C' and damov>20110100 and darav='D'
GROUP BY clifo
HAVING sum(impeu)>50000
ORDER BY clifo

ATTENZIONE: HAVING va indicato dopo GROUP BY e prima di ORDER BY.
Approfondisci

twittergoogle_pluslinkedinmailby feather