【问题标题】:Return value from MSSQL stored procedure in Eclipse Scout从 Eclipse Scout 中的 MSSQL 存储过程返回值
【发布时间】:2021-10-08 15:14:09
【问题描述】:

使用 SQL.callStoredProcedure 方法调用存储过程的正确方法是什么。

使用 CallableStatement 我可以从 MSSQL 存储过程中获取返回参数,但使用 SQL Scout 包装类不能。

我有一个名为“testproc”的示例 SP,它有两个参数,一组作为输出。

我试过了:

IntegerHolder holder = new IntegerHolder();
SQL.callStoredProcedure("testproc @in_par=:inPar, @out_par=:outPar INTO :holder", new NVPair("inPar", 1), new NVPair("outPar", 2), new NVPair("holder", holder));

这是执行的,两个IN参数是寄存器,一个OUT是寄存器。这是输出:

SQL with binds:
*** UNPARSED ***
TESTPROC @IN_PAR = :inPar , @OUT_PAR = :outPar INTO :holder
IN  :inPar => ? [INTEGER 1]
IN  :outPar => ? [INTEGER 2]
OUT :holder => ? [Integer] 
null

Holder 值始终为空。

我正在使用 Scout v.11.0.24,在 Windows 10 64 位和最新的 Eclipse 上运行。 并使用 MSSQL JDBC:

<!-- https://mvnrepository.com/artifact/com.microsoft.sqlserver/mssql-jdbc -->
<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>7.2.1.jre8</version>
</dependency>

我还尝试使用 EXEC/CALL 使用 JDBC 语法,但没有使用 INTO,但没有任何效果。

在 Eclipse Scout 中使用 Scout SQL 包装器和 SQL.callStoredProcedure 调用存储过程的正确方法是什么?

注意:当使用 clear JDBC (CallableStatement) SP 时,SP 正在返回值,因此 SP 按预期工作。但是我想使用 Scout SQL 类来处理存储过程。

谢谢

【问题讨论】:

    标签: mssql-jdbc eclipse-scout


    【解决方案1】:

    我找到了。语法是:

    IntegerHolder holder = new IntegerHolder();
    SQL.callStoredProcedure("testproc @in_par=:inPar, @out_par =:[OUT]returnValue", new NVPair("inPar", 1),  new NVPair("returnValue", holder));
    

    【讨论】:

      猜你喜欢
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-06
      • 2013-01-22
      相关资源
      最近更新 更多