Чтобы упаковать свои классы с зависимостями в исполняемый jar-файл, вы должны использовать maven-shade-plugin :
org.apache.maven.plugins
maven-shade-plugin
3.2.1
package
shade
com.salsify.lineserver.server.Main
Вы можете удалить конфигурацию maven-jar-plugin
из pom.
Это не может быть самым эффективным, но я составил бы временную таблицу, чтобы содержать результаты сохраненного proc и затем использовать это в соединении против целевой таблицы. Например:
CREATE TABLE #t (uniqueid int)
INSERT INTO #t EXEC p_YourStoredProc
UPDATE TargetTable
SET a.FlagColumn = 1
FROM TargetTable a JOIN #t b
ON a.uniqueid = b.uniqueid
DROP TABLE #t
Вставьте результаты сохраненного proc во временную таблицу и соедините это с таблицей, которую Вы хотите обновить:
INSERT INTO #WorkTable
EXEC usp_WorkResults
UPDATE DataTable
SET Flag = Whatever
FROM DataTable
INNER JOIN #WorkTable
ON DataTable.Ket = #WorkTable.Key
Используйте временные таблицы или табличную переменную (Вы используете SS2005).
Хотя, это не способно вложенным множеством - если сохраненный proc использует тот метод затем, Вы не можете dumpt, которые производят во временную таблицу.
Ужасное решение состояло бы в том, чтобы иметь Ваш возврат процедуры "следующий" идентификатор каждый раз, когда это называют при помощи другой таблицы (или некоторый флаг на существующей таблице) для отфильтровывания строк, которые это уже возвратило
При обновлении до SQL 2008 затем, можно передать параметры таблицы, которым я верю. Иначе Вы застреваете с глобальной временной таблицей или составлением постоянной таблицы, которая включает столбец для своего рода идентификатора процесса для идентификации, какой вызов к хранимой процедуре является соответствующим.
Сколько комнаты Вы имеете в изменении хранимой процедуры, которая генерирует идентификаторы? Вы могли добавить код там, чтобы обработать его или иметь параметр, который позволяет Вам дополнительно отметить строки, когда это называют.
Вы могли также изменить свой сохраненный proc на пользовательскую функцию, которая возвращает таблицу с Вашим uniqueidentifiers. Вы можете joing непосредственно к UDF и рассматривать его как таблица, которая избегает необходимости составлять дополнительную временную таблицу явно. Кроме того, можно передать параметры в функцию, как Вы называете ее, делая это очень гибким решением.
CREATE FUNCTION dbo.udfGetUniqueIDs
()
RETURNS TABLE
AS
RETURN
(
SELECT uniqueid FROM dbo.SomeWhere
)
GO
UPDATE dbo.TargetTable
SET a.FlagColumn = 1
FROM dbo.TargetTable a INNER JOIN dbo.udfGetUniqueIDs() b
ON a.uniqueid = b.uniqueid
Править: Это будет работать над SQL Server 2000 и...
Можно использовать временную таблицу или табличную переменную с дополнительным столбцом:
DECLARE @MyTable TABLE (
Column1 uniqueidentifer,
...,
Checked bit
)
INSERT INTO @MyTable
SELECT [...], 0 FROM MyTable WHERE [...]
DECLARE @Continue bit
SET @Continue = 1
WHILE (@Continue)
BEGIN
SELECT @var1 = Column1,
@var2 = Column2,
...
FROM @MyTable
WHERE Checked = 1
IF @var1 IS NULL
SET @Continue = 0
ELSE
BEGIN
...
UPDATE @MyTable SET Checked = 1 WHERE Column1 = @var1
END
END
Править: На самом деле в Вашей ситуации соединение будет лучше; код выше является повторением без курсора, которое является излишеством для Вашей ситуации.