为什么jdbc调用存储过程“插入本地表,选择本地表”,CallableStatement.execute返回false?

时间:2019-02-27 01:12:27

标签: java sql-server stored-procedures jdbc

问题,存储过程,Java代码如下。

在SQL Server Express Edition Java SE 8中。

PROCEDURE1

CREATE PROCEDURE [dbo].[Test1]
AS
DECLARE @UserList TABLE (UserId char(8))
    INSERT @UserList SELECT '00000001'
    SELECT UserId FROM @UserList
    --and SELECT STATEMENT join to @UserList
GO

PROCEDURE2

CREATE PROCEDURE [dbo].[Test1]
AS
    SELECT '00000001'
    --and SELECT STATEMENT join to hard-code '00000001'
GO

Java

try (Connection con = ((DataSource) new InitialContext().lookup("java:comp/env/jdbc/myapp")).getConnection();
    CallableStatement cstmt = con.prepareCall("{call [dbo].[Test1]}");
    ) {

  boolean f = cstmt.execute();
  ResultSet rs = cstmt.getResultSet();

问题

由jdbc进行

PROCEDURE1调用,cstmt.execute()返回 false

jdbc调用

PROCEDURE2,cstmt.execute()返回 true 。 为什么?

目的

我希望使用存储过程使用动态表内参数的临时表。

0 个答案:

没有答案