У меня есть массив с тремя строками. Мне нужно включить это в мою хранимую процедуру.Создать сохраненный Proc для массива строк в MSSQL
Мои Backbean
private String [] model_NU= {"'N'", "'U'", "'D'"};
Мой Stored Proc. in Java
String stm = "{call myDB.dbo.StoredPorcQuery (?,?,?,?,?,?,?,?,?,?,?,?)}";
try {
ps = con.prepareStatement(stm);
ps.setArray(1, fb.getModel_nu());
--------
rs = ps.executeQuery();
Я использую MS SQL Server Management Studio и здесь находятся переменные в Stored Proc.
-----
ALTER PROCEDURE [dbo].[StoredPorcQuery]
@model_nu varchar (6)='%', ->Not sure here I need to use varchar to represent array
----
WHERE----
table1.model_nu IN (@model_nu) ->Not sure this part.
Я не эксперт в ХП и не знаю, как объявить этот массив в ХП и использовать IN функции для запроса со значениями массива.
Нет такой вещи, как массив в SQL Server. Посмотрите TVP (не знаю, поддерживает ли Java их), а если нет, то используйте функцию разделения строк в T-SQL. См. Http://sqlperformance.com/2012/07/t-sql-queries/split-strings и http://sqlperformance.com/2012/08/t-sql-queries/splitting-strings-now-with -less -t-sql в начале. –
Есть ли способ передать это как ps.setString для запроса с параметром IN? – SamK
Вам нужно будет использовать динамический SQL. Почему вы думаете, что было бы лучше, чем расщепление строки? –