【问题标题】:Declare output parameter and select it like a result of query, T-SQL, JAVA声明输出参数并像查询结果一样选择它,T-SQL,JAVA
【发布时间】:2018-08-31 14:11:26
【问题描述】:

我有一个 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));
    }

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

【问题讨论】:

    标签: java sql tsql stored-procedures jdbc


    【解决方案1】:

    已将字符串更改为:

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

    代码:

    最终连接连接 = 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));
        }
    

    正在工作。

    【讨论】:

      猜你喜欢
      • 2014-11-04
      • 2021-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-18
      • 1970-01-01
      • 2016-07-03
      相关资源
      最近更新 更多