Как передать табличные параметры (массив-подобный параметр) в хранимую процедуру в Microsoft SQL Server 2008 R2 с использованием JDBC?
1915 просмотра
3 ответа
Как передать таблично-значимые параметры (как в массиве) в хранимую процедуру в Microsoft SQL Server 2008 R2 с помощью драйвера JDBC Microsoft SQL Server 2008 R2? Возможно ли это с помощью jTDS?
Автор: smikesh Источник Размещён: 12.11.2019 09:43Ответы (3)
2 плюса
Текущий (3.0) драйвер Microsoft не поддерживает передачу TVP.
В какой-то момент Microsoft собирала голоса для TVP против Bulk Copy:
http://blogs.msdn.com/b/jdbcteam/archive/2011/09/22/tvp-or-bulk-copy.aspx
TVP получил больше голосов, но еще неизвестно, что на самом деле было сделано. Последняя версия CTP для версии 4.0, по-видимому, не поддерживает TVP.
Автор: Corey Cole Размещён: 30.11.2011 11:301 плюс
Хотя этот вопрос касался SQL Server 2008, и хотя в то время было невозможно передать табличные параметры, сейчас это так. Это задокументировано здесь в руководстве по драйверу JDBC . Например, это можно сделать так:
SQLServerDataTable table = new SQLServerDataTable();
table.addColumnMetadata("i" ,java.sql.Types.INTEGER);
table.addRow(1);
table.addRow(2);
table.addRow(3);
table.addRow(4);
try (SQLServerPreparedStatement stmt=
(SQLServerPreparedStatement) connection.prepareStatement(
"SELECT * FROM some_table_valued_function(?)")) {
// Magic here:
stmt.setStructured(1, "dbo.numbers", table);
try (ResultSet rs = stmt.executeQuery()) {
...
}
}
Я также недавно написал об этом здесь .
Автор: Lukas Eder Размещён: 30.10.2017 12:310 плюса
Я решил эту проблему самостоятельно. Я создал CLR .Net Stored Proc с принимает параметр BLOB. Этот BLOB - просто список сериализованных INT. Его можно десериализовать, используя T-SQL или .Net CLR SP. .Net CLR SP имеет лучшую производительность, что было очень важно для моего проекта.
Автор: smikesh Размещён: 13.01.2012 10:44Вопросы из категории :
- sql-server Проверить наличие изменений в таблице SQL Server?
- sql-server Как разбить строку, чтобы я мог получить доступ к элементу x?
- sql-server Клиент SQL для Mac OS X, который работает с MS SQL Server
- sql-server Удалить все таблицы, имена которых начинаются с определенной строки
- sql-server-2008 Как проверить, существует ли столбец в таблице SQL Server?
- sql-server-2008 Как я могу войти и найти самые дорогие запросы?
- sql-server-2008 Обозреватель объектов в SSMS 2008 не работает, если у меня нет доступа ко всем базам данных
- sql-server-2008 Ошибка - переполнение SqlDateTime. Должно быть между 1/1/1753 12:00:00 AM и 12/31/9999 11:59:59 PM
- stored-procedures Хранимая процедура T-SQL, которая принимает несколько значений Id
- stored-procedures Как условно создать хранимую процедуру в SQL Server?
- stored-procedures Как быстро определить самые последние измененные хранимые процедуры в SQL Server
- stored-procedures Какой синтаксис T-SQL для подключения к другому серверу SQL?
- jdbc Как избежать хранения паролей в открытом виде для tomcat server.xml Определение ресурса DataSource?
- jdbc Могу ли я подключиться к SQL Server с помощью аутентификации Windows из веб-приложения Java EE?
- jdbc Как я могу получить размер java.sql.ResultSet?
- jdbc Как выполнить модульное тестирование кода JDBC в Java?
- jtds Как я могу выполнить хранимую процедуру с помощью JDBC / jTDS без использования транзакции?
- jtds JDBC Jtds не может установить соединение
- jtds Как передать табличные параметры (массив-подобный параметр) в хранимую процедуру в Microsoft SQL Server 2008 R2 с использованием JDBC?
- jtds Не удается подключиться к SQL Server через драйвер JDBC для Microsoft SQL Server 2012