Newsgroup: it.comp.software.database
Titolo: è possibile settare una variabile in uno script .SQL ?

Salve a tutti, vorrei sapere se in uno script .sql è possibile settare
una variabile;
semplice esempio:
VAR mia_var = "database001";
USE mia_var;
SELECT * FROM mia_var;
Io non ho trovato nulla in rete, spero che voi possiate aiutarmi.
Grazie,
ciao

Sto lavorando su MySQL (ero partito con PostgreSQl su winzozz ma mi
dava problemi.. non andava proprio)
Oggi avevo provato a fare una cosa del genere: (prova.sql)
SET @DB='superenalotto_prova000';
USE @DB;
SELECT * FROM @DB;
e poi, da linea di comando: \. prova.sql
ma non mi funzionava proprio.
P.S: ma tu sei il Davide Bianchi di 
soft-land.org
 ?

 
Strano, non dovrebbe avere problemi.
Che versione hai provato ad installare? Cosa è che non andava.
Ciao  Manlio

On 5 Feb, 21:34, Manlio Perillo <manlio_perill...@SPAMlibero.it>
wrote:

Ecco il mio script (posizionato sul desktop) "variabile.sql":
SET @DB='superenalotto_prova000';
USE @DB;
SELECT * FROM @DB;
accedo a Mysql da linea di comando, tutto ok.
digito \. variabile.sql
ed ecco cosa ottengo:
Microsoft Windows XP [Versione 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\Documents and Settings\Giordano>d
C:\Documents and Settings\Giordano\Desktop>m
*==================================*
    ciao GIORDANO
*==================================*
         Benvenuto in MySQL
*==================================*
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.0.86-community-nt MySQL Community Edition (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the current input
statement.
mysql> \. variabile.sql
Query OK, 0 rows affected (0.00 sec)
ERROR 1049 (42000): Unknown database '@db'
ERROR 1064 (42000): You have an error in your SQL syntax; check the
manual that
corresponds to your MySQL server version for the right syntax to use
near '@DB'
at line 1
mysql>
Infatti sento due beep di errore.
Che cosa può essere ?

 Che cosa pu� essere ?
non conosco Mysql in dettaglio ma mi sembra di capire che con 
l'istruzione USE dici di utilizzare il database "superenalotto_prova000" 
e dopo fai una query inserendo nella clausola from il database stesso...
c'� qualcosa che non capisco :-|

 manual that corresponds to your MySQL server version for the right
 > syntax to use near '@DB'
Vale la considerazione 2)
Comunque non capisco cosa vuoi fare con le variabili in SQL
 > VAR mia_var = "database001";
La sintassi MySQL �:
SET @nomevar:=valorevariabile;
 > USE mia_var;
Non fai prima a dare il comando USE database001 ?
JM

 JM
Ah si vero... dimenticavo di specificare la tabella
comunque non mi funziona lo stesso

 comunque non mi funziona lo stesso
Quindi *funziona correttamente*, visto che non puoi usare variabili per 
referenziare DB e Tabelle.
JM

 SELECT * FROM mia_var;
Direi che non si pu� fare, da 
http://dev.mysql.com/doc/refman/5.0/en/user-variables.html
:
... User variables are intended to provide data values. They cannot be 
used directly in an SQL statement as an identifier or as part of an 
identifier, such as in contexts where a table or database name is 
expected, or as a reserved word such as SELECT...
Quindi il tuo caso d'uso � palesemente tra quelli non contemplati.
-- 
Design for the future, because it will be here sooner than you think.
(C) Eric S. Raymond, from "The Art of Unix Programming"

 [...]
Hai capito male la mia domanda.
Chiedevo che problemi avevi avuto con PostgreSQL.
Ciao  Manlio

 Ciao  Manlio
Ora non ricordo benissimo, ma credo che -dopo averlo installato e
settato le variabili d'ambiente- non partiva proprio.

 (C) Eric S. Raymond, from "The Art of Unix Programming"
Ok, 1000 grazie



Ti consiglio di ritentare, perchè PostreSQL è un prodotto migliore di 
MySQL, perchè aderisce meglio allo standard SQL ed ha funzionalità 
avanzate per la gestione dei dati.
Ciao  Manlio

On 7 Feb, 13:47, Manlio Perillo <manlio_perill...@SPAMlibero.it>
wrote:

Si, grazie... appena ho ripreso affinità con Mysql (ergo progettato lo
scheletro del mio database) passerò a PostgreSql