syb_nsql (в качестве прямого порта Sybase :: DBlib nsql
, который является оболочкой довольно высокого уровня) поддерживает все расширенные функциональные возможности nsql, которые DBD :: Sybase не готовит-выполняет (IIRC ) изначально и для которого вам нужно написать код-обертку самостоятельно (в общем, вам все равно придется заново реализовать собственную версию nsql):
Функциональность MaxRows для ограничения количества возвращаемых строк для экономии использования памяти
необязательная логика повторных попыток взаимоблокировки
проверка ошибок (с использованием сопутствующей ошибки и обработчики сообщений - я не помню, чтобы DBD :: Sybase имел обработчики сообщений)
и несколько вариантов формата возвращаемых значений.
Кроме того, данные могут быть либо возвращены вызывающей стороне навалом (таким образом, нет необходимости писать свой собственный цикл для fetch_arrayref и т. Д.), Либо обрабатываются построчно через подпрограмму обратного вызова, переданную в качестве аргумента. (эта функциональность аналогична методу r_sql ()).
Учитывая тот факт, что nsql фактически реализован с использованием prepare / execute / fetchrow_arrayref; он практически не будет иметь функциональных отличий от любой обычной функции подготовки к выполнению, которую вы используете напрямую . Кажется, он даже поддерживает заполнители в соответствии с комментариями к коду, хотя, похоже, это не задокументировано.
Таким образом, разница в том, что nsql позволяет вам не использовать собственный код-обертку для поддержки каких-либо расширенных функций, таких как повторная блокировка или MaxRow, перечисленных выше.