我如何解决“游标未声明”从SQL Server



我正在通过WebSphere中的Spring连接到SQL Server。我有一个非常简单的动态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))

试着说WITH (nolock)而不仅仅是(nolock)。sql server的最新版本不再支持后一种语法

我删除了"nolock"指令,连同"TOP 1",问题就解决了。这使我怀疑它与JDBC驱动程序有关。

检查正在使用的服务器上的哪个数据库。如果在同一台服务器上有不同的数据库,那么如果没有指定,sql客户端默认情况下通常会选择"master"或其他类似的数据库来运行查询。选择包含您正在查询的表的表或在查询之前使用USE <dbname> GO将处理错误。

我不知道这个答案在10年后有多大的相关性,但是在处理一些旧代码时,我偶然发现了同样的"错误",我通过从查询中删除字段列表来解决它,留下低效的SELECT *。这就解决了我的问题。

BTW,旧代码使用Microsoft SQL Server ODBC驱动程序访问SQL Server,似乎问题正是这样,'因为在SSMS上运行相同的查询没有问题'。

我最近也有同样的问题。通过使用CTE重写所有查询解决了这个问题。

WITH CTE
AS
(
SELECT..
)
SELECT * FROM CTE

当前正在查找与Internet信息服务调用的存储过程相同的问题。

最新更新