有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

通过Java SQL API将存储过程设置为关闭

我们有一个存储过程,它创建动态SQL查询并使用EXEC命令执行。这里使用的数据库是Sybase。我们正在使用Java编写的程序执行查询

存储过程片段如下所示

SELECT @select_stmt = '
select name, address, age, "M" from tbl_boys' 

EXEC(@select_stmt)

问题:通过stmt执行时。Java SQL API中的execute(),抛出“无效列名”M“。\n

我的尝试:
场景1:在生成动态查询之前添加SET QUOTED_IDENTIFIER OFF。结果与上述错误相同

SET QUOTED IDENTIFIER OFF
SELECT @select_stmt = '
select name, address, age, "M" from tbl_boys' 

EXEC(@select_stmt)
  1. 在单引号中添加了SET QUOTED_IDENTIFIER OFF。现在API不会返回任何错误,而是返回正确的结果集
SELECT @select_stmt = '
SET QUOTED IDENTIFIER OFF
select name, address, age, "M" from tbl_boys' 

EXEC(@select_stmt)

在Java代码中连接到数据库时,我在连接字符串中添加了QuotedIdentifier=0,但其行为类似于场景1并抛出错误。如何在不修改存储过程的情况下获得正确的结果。我需要一个通过API的解决方案。出于某种原因,EXEC命令不处理在动态查询之前写入的SET QUOTED_IDENTIFIER OFF

注意:这只是一个示例代码片段。我在工作场所面临代码问题,无法共享实际代码。另外,我不能通过修改存储过程来解决这个问题,因为我们有100多个地方面临这样的问题。只有在使用JavaAPI执行时才会出现问题。它不发生在编辑器或库中用C++编写。p>


共 (0) 个答案