Inviare e-mail da VBScript

Di seguito una funzione di come inviare e-mail da VBScript

 

Const cdoSendUsingMethod = "http://schemas.microsoft.com/cdo/configuration/sendusing"

Const cdoSendUsingPort = 2
Const cdoImportance = "urn:schemas:httpmail:importance"
Set objMail = CreateObject("CDO.Message")
Set objConf = CreateObject("CDO.Configuration")
With objConf.Fields
  .Item(cdoSendUsingMethod) = cdoSendUsingPort
  'se la mail non viene inviata, impostare l'SMTP del provider
  'che fornisce la connessione a internet, es: mail.tin.it
  .Item(cdoSMTPServer) = "localhost"
  .Update
End With
    
With objMail
  ' Valore di priorità
  'objMail.Fields(cdoImportance).Value = 2
  'inserisce la richiesta di conferma di lettura a uno specifico destinatario
  'può non coincidere con il mittente
  'objMail.Fields("urn:schemas:mailheader:Disposition-Notification-To").Value = "<sender@test4.it>"
  'objMail.Fields.update()  'va chiamato se si modifica l'header
  set .Configuration = objConf
  .From = "sender@test4.it" 'mittente
  .To = "BO@test4.it"   'destinatari indirizzi separati da ';'
  '.Cc = strCc      'destinatari in copia conoscenza
  '.Bcc = strBcc      'destinatari in copia conoscenza nascosta
  .Subject = "Oggetto del messaggio"
  .HTMLBody = "Vedi <b>allegato</b>"
  'oppure TextBody per una mail in formato testo
  '.Textody = "ciao"
  'eventuali allegati
  '.AddAttachment("c:\test.txt")
  .Send()
End With
set objConf = nothing
set objMail = nothing

Manipolazione delle stringhe

Oracle dispone di speciali funzioni che l’utente può utilizzare per gli scopi più disparati nelle sue istruzioni SQL.

Le funzioni a singola riga (inline) sono chiamate così perchè vengono valutate una sola volta per ogni riga di tabella interessata. Possono essere impiegate negli statementSELECT (direttamente sulle colonne interrogate), nelle clausole WHERE e ORDER BY ma anche nelle operazioni di modifica dati in tabella (clausola SET del comando UPDATE), di inserimento dati in tabella (clausola VALUES del comando INSERT) e di cancellazione (clausola WHERE del comando DELETE).

Le funzioni che tratteremo sono solamente alcune fra le innumerevoli messe a disposizione da Oracle. Per un elenco completo consigliamo comunque di consultare la documentazione ufficiale di Oracle. Read more »

Chiavi esterne e integrità referenziale

Constraint FOREIGN KEY

Questo vincolo di integità referenziale consente di stabilire relazioni fra le tabelle. Quanti hanno progettato un database con Microsoft Access, implementato un paio di tabelle e una relazione fra queste, possono riconoscere nelle figure seguenti una semplice relazione.

Figura 1. Descrizione delle tabelle “Padre” e “Figlio”

Descrizione delle tabelle "Padre" e "Figlio"

Figura 2. Relazione tra le tabelle “Padre” e “Figlio”

Relazione tra le tabelle "Padre" e "Figlio"

Nelle figure sono mostrate due tabelle, Padre e Figlio, e una relazione “1 a molti” stabilita fra queste. La relazione creata stabilisce che un oggetto (riga) della tabella Padre può essere collegato a 0 o più oggetti (righe) nella tabella Figlio, mentre un oggetto della tabella Figlio può appartenere solamente ad un oggetto della tabella Padre. Read more »

Chiavi primarie e campi unici

Constraint UNIQUE

Può essere impostato su una o più colonne ed assicura, sull’intera tabella, l’unicità dei valori per le colonne protette. Di seguito le sintassi per applicare il vincolo UNIQUE all’interno di CREATE TABLE o ALTER TABLE, sia per una sola colonna sia per più colonne.

Sintassi del vincolo UNIQUE a livello di colonna

<nome colonna> <tipo> CONSTRAINT <nome vincolo> UNIQUE

Sintassi del vincolo UNIQUE semplificato (anonimo) a livello di colonna

<nome colonna> <tipo> UNIQUE

Sintassi del costraint UNIQUE a livello di tabella

CONSTRAINT <nome> UNIQUE (colonna, colonna, …)

Nota:Un constraint di tipo UNIQUE consente anche la memorizzazione di valori NULL nella colonna protetta, questo perché i valori NULL sono considerati diversi fra loro Read more »

Vincoli di controllo sui dati

constraint (o vincoli), sono delle regole che vengono stabilite all’interno di una tabella Oracle che servono ad evitare che l’utente possa inserire dati non conformi ad alcune regole. Queste regole possono preservare l’inserimento dei dati o l’integrità referenziale tra le tabelle.

Possono essere dichiarati sia in fase di creazione tabella (CREATE TABLE), sia in fase di modifica della tabella (ALTER TABLE). Se il constraint è applicato ad una singola colonna allora è detto constraint di colonna, altrimenti se è applicato a più di una colonna è detto constraint di tabella.

Durante la dichiarazione del vincolo possiamo associargli un nome (usando la clausola CONSTRAINT), in caso contrario sarà Oracle a definirne uno di sistema (inizierà sempre con il prefisso SYS_). I vincoli vengono memorizzati da Oracle nel dizionario dei dati. Read more »

Manipolare le tabelle

In questa lezione vedremo come eliminare definitivamente una tabella e cambiarne il nome.

Cancellazione di una tabella

Quando una tabella non è più necessaria allora si può pensare alla sua cancellazione.

Sintassi semplificata di DROP TABLE

DROP TABLE <schema>.<tabella>;

Possiamo cancellare la tabella posseduta da un altro utente se disponiamo dei giusti privilegi. La cancellazione della tabella comporta altresì la cancellazione di tutti gli indici creati per le colonne della tabella. Se sono stati creati vincoli di integrità referenziale (saranno oggetto di prossime lezioni) sulle colonne della tabella da cancellare agiremo con la clausola CASCADE CONSTRAINTS. Read more »

Manipolare le colonne

Nelle precedenti lezioni abbiamo esaminato i comandi per la creazione di tabelle, per l’inserimento di dati nelle tabelle e per le interrogazioni (query). Inoltre abbiamo imparato ad interpretare la struttura di una tabella (ottenuta con DESCRIBE), data da un insieme di colonne, ognuna con un suo datatype.

Nel corso di questa lezione vedremo come modificare la struttura di una tabella già esistente nel database, in particolar modo l’aggiunta di una o più colonne, la modifica del datatype di colonna o l’eliminazione di una colonna non più necessaria. Read more »

Privilegi di sistema

Analizzeremo essenzialmente due privilegi di sistema: CREATE SESSION e CONNECT. Connettiamoci al database “ARCHIVIO”, mediante l’utente “sampras”, senza il bisogno di aprire una nuova sessione di SQL* Plus.

SQL> CONNECT sampras/pete@arch-serv
ERROR:
ORA-01045: user SAMPRAS lacks CREATE SESSION privilege; logon denied
Avvertenza: Connessione a ORACLE interrotta.

Oracle solleva l’errore ORA-01045 quando si cerca di stabilire la connessione ad un database mediante un utente che non ha il privilegio di connessione.

Ogni volta che si crea un nuovo utente, questi non ha il permesso di connessione al database: esiste all’interno del DB e non può fare assolutamente nulla. Il privilegio di sistemaCREATE SESSION concede all’utente specificato la capacità di connettersi al proprio database. Read more »

I permessi

Il permesso, come noto, rappresenta la capacità di compiere un’azione. In Oracle i permessi sono chiamati privilegi e consentono di accedere ad oggetti logici, come le tabelle, posseduti da altri utenti del database, di creare oggetti o di eseguire particolari attività amministrative.

Queste sono solamente alcune delle possibili azioni che in realtà sono davvero numerose. In questa lezione tratteremo due categorie di privilegi Oracle:

  • Privilegi sugli oggetti - intesi come l’insieme di operazioni che è possibile compiere su un particolare schema. Ricordiamo che lo schema è, in realtà, un’utente che possiede oggetti;
  • Privilegi di sistema - consentono di eseguire operazioni di sistema, come la creazione di tabelle, di utenti o di avere la possibilità di connettersi ad un database. Read more »

Quote e password

Le quote in Oracle

Se ciascun utente avesse a disposizione uno spazio di memorizzazione illimitato all’interno del database, questo aumenterebbe a dismisura. Questo è uno dei motivi per i quali viene stabilita una quota, ovvero uno spazio con dimensione prestabilita, per ciascun utente o almeno per quelli la cui dimensione degli oggetti posseduti rischia di aumentare in maniera incontrollata.

Le quote possono essere espresse in byte, in kilobyte, in megabyte oppure in maniera illimitata mediante la clausola UNLIMITED. Per dichiarare una quota tramite i comandiCREATE USER e ALTER USER usiamo la clausola QUOTA. Vediamo qualche esempio.

Creazione di un utente con quota di 24MB nel tablespace “users” Read more »