Как я могу решить «Курсор не был объявлен» из SQL Server - PullRequest
0 голосов
/ 19 октября 2011

Я подключаюсь к SQL Server через Spring в WebSphere. У меня есть кусок довольно простого динамического SQL (ниже), который выдает «Курсор не был объявлен».

SELECT TOP 1
    short_desc shortDescription
FROM
    product.prs.PRODUCT_SKN (nolock)
WHERE
    prod_sales_div_code = 'XXX'
    AND product_nbr = ?

Одной из настроек для источника данных, который представляется актуальным, является «режим выбора» - «курсор». Я не совсем уверен, что мне нужно сделать, чтобы устранить ошибку.

edit Телефонный код: findShortDescriptionQuery.get().findObjectByNamedParam(of("productNumber", productId))

Ответы [ 3 ]

0 голосов
/ 20 октября 2011

Я полностью удалил директиву «nolock» вместе с «TOP 1», и проблема исчезла.Это заставляет меня подозревать, что это связано с драйвером JDBC.

Этот обходной путь не идеален, но для моей цели будет работать просто отлично.

0 голосов
/ 28 декабря 2017

Проверьте, какую базу данных на сервере вы используете.Если у вас есть разные базы данных на одном и том же сервере, ваш sql-клиент по умолчанию обычно выбирает «master» или что-то подобное, чтобы выполнить запрос, если вы не укажете.Выберите тот, который содержит запрашиваемую вами таблицу, или используйте USE <dbname> GO до того, как запрос обработает ошибку.

0 голосов
/ 19 октября 2011

Попробуйте сказать WITH (nolock), а не просто (nolock).Последний синтаксис больше не поддерживается в последних версиях сервера sql.

...