Выполняю SQL запросы через JDBC. Если запрос содержит переменную типа TABLE, то результат не возвращается:
Exception in thread "main" com.microsoft.sqlserver.jdbc.SQLServerException: The statement did not return a result set.
Пример SQL запроса:
DECLARE @Table TABLE (ID int);
INSERT INTO @Table (ID)
SELECT RecordID FROM tblData
SELECT * FROM @Table
Пример Java кода:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileNotFoundException;
import java.io.IOException;
public class Full_Code {
public static void main (String[] args) throws ClassNotFoundException, SQLException, FileNotFoundException, IOException
{
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
String Query = "", s;
BufferedReader in = new BufferedReader(new FileReader("Query.txt"));
while ((s = in.readLine())!=null) Query += s+"\n"; in.close();
in.close();
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
con = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1;databaseName=MyDB;user=VriL;password=987;");
stmt = (Statement) con.createStatement();
rs = stmt.executeQuery(Query);
rs.close(); con.close(); stmt.close();
}
}
Важно отметить:
Буду благодарен за любую помощь.
попробуйте SQL оформить так select @@TABLE as TABLE
для примера так работает с @VERSION
ResultSet rs_version;
String msmsql_sql="select @@VERSION as VERSION";
rs_version=stmt.executeQuery(msmsql_sql);
while (rs_version.next()){
out.println("<b>"+rs_version.getString("VERSION")+"</b>");
}
с результатом
Microsoft SQL Server 2016 (SP1) (KB3182545) - 13.0.4001.0 (X64) Oct 28 2016 18:17:30 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows 10 Pro 6.3 (Build 14393: )
Приведенный вами скрипт является Transact-SQL выражением, соответственно в терминах JDBC он должен интерпретироваться как CallableStatement
, то есть по сути вы должны скрипт сохранить как хранимую процедуру и вызывать ее через CallableStatement
Виртуальный выделенный сервер (VDS) становится отличным выбором
Нужно из строки "Привет, как дела? (siteru)" удалить подстроку (site
Очень редкий баг, но его надо поправить(Пришел по багтрекеру после месяца использования пользователями)
Мне нужно было сделать имплементация proguard в проекте как было до