MS SQL 和 Java: 在调用存储过程期间找不到 table 变量
MS SQL and Java: cannot find table variable during call stored procedure
我正在尝试从 Java.
执行 MS-SQL 存储过程
其中一个过程参数是 table 变量(在本例中,它称为 [Items])。
该过程和 table 变量定义在 单独的模式 中(在本例中是 [test])。
在调用过程中,出现以下错误"com.microsoft.sqlserver.jdbc.SQLServerException: Column, parameter, or variable @P1. : Cannot find data type Items."。
我使用 Spring 的 SimpleJdbcCall 和微软的 jdbc 驱动程序 - sqljdbc-6.0 与 MS-SQL:
SimpleJdbcCall testCall = new SimpleJdbcCall(jdbcTemplate)
.withSchemaName("[test]")
.withProcedureName("[SomeTestProcedure]")
.withoutProcedureColumnMetaDataAccess()
.declareParameters(
new SqlParameter("Id", Types.INTEGER),
new SqlParameter("Items", microsoft.sql.Types.STRUCTURED));
testCall.compile();
SQLServerDataTable sdt;
try {
sdt = new SQLServerDataTable();
sdt.addColumnMetadata("Name", Types.NVARCHAR);
sdt.addColumnMetadata("Value", Types.INTEGER);
sdt.addRow("DEV", 1);
sdt.addRow("PROD", 2);
} catch (SQLServerException e) {
throw new IllegalStateException(e);
}
testCall.execute(1, sdt);
如果能帮助解决问题,我将不胜感激。谢谢
我发现,驱动程序尝试使用设置给用户的默认架构中的 table 变量。
在我的例子中,[dbo]-scheme 被设置为 default schema。
因此,[dbo]-方案 没有导致错误 "Cannot find data type Items" 的此 table 变量 [项目]。
在我们将用户的默认架构更改为 [test](其中创建了 table 变量)之后,错误消失了。
我正在尝试从 Java.
执行 MS-SQL 存储过程其中一个过程参数是 table 变量(在本例中,它称为 [Items])。 该过程和 table 变量定义在 单独的模式 中(在本例中是 [test])。
在调用过程中,出现以下错误"com.microsoft.sqlserver.jdbc.SQLServerException: Column, parameter, or variable @P1. : Cannot find data type Items."。
我使用 Spring 的 SimpleJdbcCall 和微软的 jdbc 驱动程序 - sqljdbc-6.0 与 MS-SQL:
SimpleJdbcCall testCall = new SimpleJdbcCall(jdbcTemplate)
.withSchemaName("[test]")
.withProcedureName("[SomeTestProcedure]")
.withoutProcedureColumnMetaDataAccess()
.declareParameters(
new SqlParameter("Id", Types.INTEGER),
new SqlParameter("Items", microsoft.sql.Types.STRUCTURED));
testCall.compile();
SQLServerDataTable sdt;
try {
sdt = new SQLServerDataTable();
sdt.addColumnMetadata("Name", Types.NVARCHAR);
sdt.addColumnMetadata("Value", Types.INTEGER);
sdt.addRow("DEV", 1);
sdt.addRow("PROD", 2);
} catch (SQLServerException e) {
throw new IllegalStateException(e);
}
testCall.execute(1, sdt);
如果能帮助解决问题,我将不胜感激。谢谢
我发现,驱动程序尝试使用设置给用户的默认架构中的 table 变量。
在我的例子中,[dbo]-scheme 被设置为 default schema。 因此,[dbo]-方案 没有导致错误 "Cannot find data type Items" 的此 table 变量 [项目]。 在我们将用户的默认架构更改为 [test](其中创建了 table 变量)之后,错误消失了。