Newsgroup: it.comp.lang.perl
Titolo: Perl e DBI

Sono nuovo al Perl...
Non riesco a leggere da Oracle per un problema
dovuto agli apici, probabilmente.
Lo statement è il seguente:
my
$sthoracle = $dbhoracle->prepare( 
    q{ SELECT   codice_settore,
codice_societa, 
                societa, 
                prefisso,
lunghezza_userid   
       from     its_rcs_societa 
       where
codice_societa = '$codice_soc'
       order by codice_settore 
     }
)
     or print "Errore durante Prepare su Oracle: $DBI::errstr";
se
nello statement scrivo in chiaro il codice
(ovvero    where
codice_societa = '2731') funziona.
Cosa posso fare?
Grazie.
--------------------------------
Inviato via 
http://usenet.iol.it

      or print "Errore durante Prepare su Oracle: $DBI::errstr";
q// e' un single quote, le variabili non vengono espanse, usa qq//
-- 
Saluti,
Giancarlo

Giancarlo
--------------------------------
Inviato via 
http://usenet.iol.it
 

 ha scritto nel messaggio
news:151Z92Z176Z3Y1...@usenet.iol.it...

Forse sbaglio ma secondo me non puoi passare parametri in questo modo.
anche perchè in oracle dovresti usare
my $ricerca = $file->prepare("SELECT   codice_settore, codice_societa,
societa, prefisso, lunghezza_userid from its_rcs_societa where
codice_societa = :gom order by codice_settore")
  or print p("Non riesco a cercare per: $file::errstr");
$ricerca->bind_param(":gom", $codice_soc);
cioè devi passare il parametro tramete l'istruzione bind_param
io invece che sono per le cose sbrigative, e tu capisci che se ci sono 10
variabili è un casino bindarle, uso questo
$testoricerca = "SELECT   codice_settore, codice_societa, societa, prefisso,
lunghezza_userid from its_rcs_societa where codice_societa = '$codice_soc'
order by codice_settore ";
my $ricerca = $file->prepare($testoricerca)
  or print p("Non riesco a cercare per: $file::errstr");

   or print p("Non riesco a cercare per: $file::errstr");
io invece userei quest'altro, che č piů sicuro (non devi quotare gli apici
nelle
stringhe), efficiente come quello con bind_param, ma con meno righe di
codice:
  my $ricerca = $file->prepare(q(
    SELECT
      codice_settore, codice_societa,
      societa, prefisso, lunghezza_userid
    FROM its_rcs_societa
    WHERE codice_societa=?
    ORDER BY codice_settore
  )) or die "Non riesco a cercare: $file::errstr";
  $ricerca->execute( $codice_soc );
se ci sono 10 variabili, le passi tutti a execute, puoi fare anche cose
cosě:
  $ricerca->execute( @parametri );
cheers,
Aldo
__END__
$_=q,just perl,,s, , another ,,s,$, hacker,,print;

   $ricerca->execute( @parametri );
Ma sei sicuro che funzioni in Oracle...
Il sistema a cui fai riferimento lo uso in Sql Server ma il Oracle nn sono
mai riuscito a farlo andare.
PS: nn vuole essere una critica vorrei solo sapere se tu riesci a farlo
andare perchč se cosě fosse probabilmente  io sbaglio in qualche punto.
Sappimi dire. Grazie Stefano

Funziona! Funziona! Anche con Db2 su Mainframe!
Lo sto utilizzando per
trasferire/Match-are dati tra basi dati Oracle su Unix e Db2 su OS/390 e
come se non bastasse il web server sta su un W2000 Adv.Server (come dire:
in un colpo si possono fare danni su 3 piattaforme diverse)


 Sappimi dire. Grazie Stefano
sě, io l'ho fatto andare in questo modo su Oracle 8i/Solaris.


Grazie per l'informazione Stefano