java - 声明输出参数并像查询结果、T-SQL、JAVA 一样选择它

标签 java sql tsql stored-procedures jdbc

我有一个sql查询:

DECLARE @output varchar(100) exec map.GetGenreStatusName 'Genre', '2018-03-16', @output OUTPUT select @output;

它返回类似:

<anonymous>
 Completed

我需要从java代码中获取它。我的变体是:

final String statusCheck = "DECLARE @output varchar(100) exec map.GetGenreProtocolStatusName ?, ?, ? OUTPUT select @output;";
List<String> chekList = new ArrayList<>();
 try (CallableStatement statement = connection.prepareCall(statusCheck)) {
       statement.setString(1, packageName);
        statement.setDate(2, date);
        statement.registerOutParameter("output", 12);
        statement.execute();
        ResultSet checkStatusResult = (ResultSet) statement.getObject(0);
        chekList.add(checkStatusResult.getString(0));
    }

如何将此字符串“Completed”从选择中取出到我的列表中?我用“?”尝试了不同的变体设置和注册输入/输出参数,我尝试像查询一样执行它,但什么也没有。

最佳答案

已将字符串更改为:

final String statusCheck = "exec map.GetGenreProtocolStatusName ?, ?, ?;"; 

代码:

最终Connection连接 = DriverManager.getConnection(dataSourceUrl, dbProperties);

    List<TvScheduleInterval> scheduleIntervals = new ArrayList<>();
    List<String> checkList = new ArrayList<>();

    try (CallableStatement statement = connection.prepareCall(statusCheck)) {
        statement.setString(1, packageName);
        statement.setDate(2, date);
        statement.registerOutParameter(3,12);
        statement.execute();
        checkList.add(statement.getString(3));
    }

现在工作。

关于java - 声明输出参数并像查询结果、T-SQL、JAVA 一样选择它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49423584/

相关文章:

java - 使用 java.util.logging 登录控制台

java - List DataModel 只读取最后一个元素

mysql - SQL select 语句 - 有关键字吗?

sql - SQL 中每一天的 MAX - MIN

java - 无论如何要在 Coldfusion 9 中热部署 Jar?

java - 如果超出特定时区,如何捕获基于 UTC 的事件?

SQL 按 LIKE 模式分组

php - 为什么这容易发生 SQL 注入(inject)?

sql-server - 在 SQL 中检查日期范围

sql-server - 选择将 varchar 列转换为 bigint 失败的记录