November 2019

S M T W T F S
      12
34 5 678 9
10111213141516
17181920212223
24252627282930

Style Credit

Expand Cut Tags

No cut tags
Tuesday, December 6th, 2005 12:00 pm
perl 5.8.7 + DBD::Sybase 1.00 + freetds 0.63 и всё это в MS SQL 2000


"SELECT count(*) from SOMETABLE WHERE PARENT_ID = 2"
работает и выдает правильный результат.


В инструкции написано:
DBD::Sybase supports the use of ? placeholders in SQL statements as long as the underlying library and
database engine supports it.
Ещё конкретнее
syb_dynamic_supported (bool)
This is a read-only attribute that returns TRUE if the dataserver you are connected to supports
?-style placeholders. Typically placeholders are not supported when using DBD::Sybase to connect
to a MS-SQL server.

вот он после коннекта равен 1.

Но конструкция
$sth = $dbh->prepare("SELECT count(*) from SOMETABLE WHERE PARENT_ID = ?");

вылетает с сообщением
ct_send(CS_DESCRIBE_INPUT) returned 0 at /usr/lib/perl5/DBD/Sybase.pm line 124.
Segmentation fault

еще на этапе prepare, до execute дело не доходит.

В 124 строке вышеупомянутого файла написано:

DBD::Sybase::st::_prepare($sth, $statement, @attribs)
or return undef;

Вопрос: это я что-то неправильно делаю, или оно таки не поддерживается сервером или freetds'ом?

Очень уж не хочется вручную все входные данные проверять и префиксировать, хочется идеологически правльное решение использовать.

Reply

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting