/ Forside / Teknologi / Udvikling / Perl / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Perl
#NavnPoint
bjarneA 141
poul_from 50
soccer 30
Nicknack 14
Tmpj 0
DBI problem med : i select statement
Fra : Torben Slaikjer


Dato : 04-07-02 14:49

Hej.

Jeg er ved at programmere en perl applikation som skal hente information fra
NDS (Novell's svar på AD, de kom bare først , Novell har en ODBC driver
der mapper objecter i NDS til SQL tabeller og den fungerer faktisk ganske
fornuftigt, bortset fra een ting:

Nogle af felterne hedder f.eks. 'ZEN:INV BIOS type', dvs. der et : i
feltnavnet, og når man så vil lave en select på dette felt, som
$sth=$dbh->prepare(q{select "ZEN:INV BIOS type" from Workstations});
opstår der en fejl. Det ser ud som om at :INV fjernes og erstattes af ?,
fejlen som kommer fra programmet er i hvert fald:
[Novell][ODBC Driver For eDirectory] ZEN? BIOS Type (SQL-S0000)(DBD:
st_prepare/SQLPrepare err=-1)

Er der nogle af jer hardcore DBI brugere, som har en ide om hvad der går
galt, og bedst af alt hvad man kan gøre ved det ??

Mvh.
Torben Slaikjer





 
 
Jesper Krogh Christe~ (05-07-2002)
Kommentar
Fra : Jesper Krogh Christe~


Dato : 05-07-02 09:05



Torben Slaikjer (08-07-2002)
Kommentar
Fra : Torben Slaikjer


Dato : 08-07-02 09:22

Hejsa,

Det var noget af det første jeg prøvede var forskellige (syge) former for
escape, og det virker desværre ikke.
Jeg har også prøvet med at sætte feltnavnet i [], {}, ' ' osv, men det giver
altid fejl, så grunden er noget helt andet.

/torben

"Jesper Krogh Christensen" <jesperk@kom.auc.dk> skrev i en meddelelse
news:Pine.GSO.4.21.0207050936420.26945-100000@lada.kom.auc.dk...
> Du skal nok escape dit kolon med \ fx. ZEN\:INV
>
> Det plejer at være nødvendigt når der anvendes specialtegn.
>
> MVH
>
> Jesper Krogh
>
> On Thu, 4 Jul 2002, Torben Slaikjer wrote:
>
> > Hej.
> >
> > Jeg er ved at programmere en perl applikation som skal hente information
fra
> > NDS (Novell's svar på AD, de kom bare først , Novell har en ODBC
driver
> > der mapper objecter i NDS til SQL tabeller og den fungerer faktisk
ganske
> > fornuftigt, bortset fra een ting:
> >
> > Nogle af felterne hedder f.eks. 'ZEN:INV BIOS type', dvs. der et : i
> > feltnavnet, og når man så vil lave en select på dette felt, som
> > $sth=$dbh->prepare(q{select "ZEN:INV BIOS type" from Workstations});
> > opstår der en fejl. Det ser ud som om at :INV fjernes og erstattes af ?,
> > fejlen som kommer fra programmet er i hvert fald:
> > [Novell][ODBC Driver For eDirectory] ZEN? BIOS Type
(SQL-S0000)(DBD:
> > st_prepare/SQLPrepare err=-1)
> >
> > Er der nogle af jer hardcore DBI brugere, som har en ide om hvad der går
> > galt, og bedst af alt hvad man kan gøre ved det ??
> >
> > Mvh.
> > Torben Slaikjer
> >
> >
> >
> >
> >
>



Torben Slaikjer (08-07-2002)
Kommentar
Fra : Torben Slaikjer


Dato : 08-07-02 10:33

Hej med jer,

Efter en del læsning, har jeg fundet ud af hvad der går galt når man
anvender : i sin select statement.

Man kan bruge :navn som placeholder i sqludtryk, og så bruger bind_parameter
funktionen til at assigne værdier.
Det som sker i mit tilfælde, er at :INV opfattes som en variabel, der ikke
har nogen værdi, så udtrykket fejler.
I det hele taget er det slet ikke tilladt at have variable mellem SELECT og
FROM i en prepare statement, men det kunne jo være en stored procedure man
kaldte, og så giver det menig med substitution.

I version 0.30 af DBD:BC indført funktionen
$dbh->{odbc_ignore_named_placeholders}. Hvis man sætter værdien til 1,
bliver :variable ikke substitueret, på nær nogle få stykker (se perldoc
DBD:BC)

Og så skal det lige bemærkes at den DBD:BC driver der er med i
ActiveStates perl distribution, kun er version 0.28, så den indeholder ikke
den funktionalitet

/torben


"Torben Slaikjer" <tsl@semco.dk> skrev i en meddelelse
news:3d245263$0$13938$edfadb0f@dspool01.news.tele.dk...
> Hej.
>
> Jeg er ved at programmere en perl applikation som skal hente information
fra
> NDS (Novell's svar på AD, de kom bare først , Novell har en ODBC
driver
> der mapper objecter i NDS til SQL tabeller og den fungerer faktisk ganske
> fornuftigt, bortset fra een ting:
>
> Nogle af felterne hedder f.eks. 'ZEN:INV BIOS type', dvs. der et : i
> feltnavnet, og når man så vil lave en select på dette felt, som
> $sth=$dbh->prepare(q{select "ZEN:INV BIOS type" from Workstations});
> opstår der en fejl. Det ser ud som om at :INV fjernes og erstattes af ?,
> fejlen som kommer fra programmet er i hvert fald:
> [Novell][ODBC Driver For eDirectory] ZEN? BIOS Type (SQL-S0000)(DBD:
> st_prepare/SQLPrepare err=-1)
>
> Er der nogle af jer hardcore DBI brugere, som har en ide om hvad der går
> galt, og bedst af alt hvad man kan gøre ved det ??
>
> Mvh.
> Torben Slaikjer
>
>
>
>



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste