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
>
>
>
>