Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / DataSnap-сервер. Получить данные из хранимой процедуры / 11 сообщений из 11, страница 1 из 1
15.08.2018, 17:20
    #39688298
Bobby
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSnap-сервер. Получить данные из хранимой процедуры
Всем доброго дня. проблема в следующем.
Есть DataSnap-сервер, который конектится к MS SQL. Задача получить данные из хранимой процедуры, которая возвращает набор записей.
Для контрола TSQLDataSet установлено Command Type=ctStoredProc, соответственно указано и имя хранимой процедуры и заведены все параметры.
Если при запуске процедуры сделать SQLDataSet_CommProp.Open, то вылетает ошибка, что Cursor not returned from query
Если сделать SQLDataSet_CommProp.ExecSQL, про процедура отрабатывает, но при любой попытке обратиться к ДатаCэту вылетает ошибка, что cannot perform operation on closed DataSet. Подскажите, плз, как обойти эти грабли. Заранее благодарен
...
Рейтинг: 0 / 0
15.08.2018, 17:39
    #39688310
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSnap-сервер. Получить данные из хранимой процедуры
Bobby,

Для SQLDataSet:
Код: pascal
1.
2.
3.
CommandType:=ctQuery;
SQL:='SELECT * FROM SP_NAME';
Open;


Не?
...
Рейтинг: 0 / 0
16.08.2018, 16:51
    #39688996
Bobby
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSnap-сервер. Получить данные из хранимой процедуры
DarkMasterBobby,

Для SQLDataSet:
Код: pascal
1.
2.
3.
CommandType:=ctQuery;
SQL:='SELECT * FROM SP_NAME';
Open;


Не?

Нет, такой вариант не прокатил. Вот решение, если кому интересно:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SET NOCOUNT ON
DECLARE @temp_n TABLE 
(
field1 INT
.....
fieldn INT
)
INSERT INTO  @temp_n

exec  [dbo].SP_NAME @param1 = :param1

SELECT * FROM @temp_n


Вот это вставляется в TSQLDatyaSet.CommandSting
И в серверном методе вызывается уже
SQLDataSet.open;
ОЧЕНЬ ВАЖНО: SET NOCOUNT ON
...
Рейтинг: 0 / 0
16.08.2018, 17:54
    #39689048
MaratIsk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSnap-сервер. Получить данные из хранимой процедуры
BobbyDarkMasterBobby,

Для SQLDataSet:
Код: pascal
1.
2.
3.
CommandType:=ctQuery;
SQL:='SELECT * FROM SP_NAME';
Open;


Не?

Нет, такой вариант не прокатил. Вот решение, если кому интересно:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SET NOCOUNT ON
DECLARE @temp_n TABLE 
(
field1 INT
.....
fieldn INT
)
INSERT INTO  @temp_n

exec  [dbo].SP_NAME @param1 = :param1

SELECT * FROM @temp_n


Вот это вставляется в TSQLDatyaSet.CommandSting
И в серверном методе вызывается уже
SQLDataSet.open;
ОЧЕНЬ ВАЖНО: SET NOCOUNT ON

какое это решение??? чешуя да и только
...
Рейтинг: 0 / 0
16.08.2018, 18:00
    #39689052
L_argo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSnap-сервер. Получить данные из хранимой процедуры
MaratIskкакое это решение??? чешуя да и толькоКак ни странно, это критичное решение.
Я только один раз столкнулся, что из-за его отсутствия прога тупо и молча не работала (QlikView).
Обычно отсутствие НОКАУНТ не мешает.
...
Рейтинг: 0 / 0
16.08.2018, 18:05
    #39689056
Bobby
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSnap-сервер. Получить данные из хранимой процедуры
L_argo,

а в чем критичость? Как ни странно, но БЕЗ SET NOCOUNT ON выдавало Cursor not returned from query
...
Рейтинг: 0 / 0
16.08.2018, 18:05
    #39689057
Bobby
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSnap-сервер. Получить данные из хранимой процедуры
MaratIsk,
Предложите более лучшее
...
Рейтинг: 0 / 0
16.08.2018, 18:08
    #39689060
MaratIsk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSnap-сервер. Получить данные из хранимой процедуры
L_argoMaratIskкакое это решение??? чешуя да и толькоКак ни странно, это критичное решение.
Я только один раз столкнулся, что из-за его отсутствия прога тупо и молча не работала (QlikView).
Обычно отсутствие НОКАУНТ не мешает.

причем тут SET NOCOUNT ON ???
это обычная команда не возвращать служебные данные при выполнении ХП
а чешуя в том, что малограмотный ТС не умеет получать данные непосредственно из ХП и придумывает костыли вроде временной таблицы
...
Рейтинг: 0 / 0
16.08.2018, 18:11
    #39689061
MaratIsk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSnap-сервер. Получить данные из хранимой процедуры
BobbyMaratIsk,
Предложите более лучшее

для начала - что используется для работы с MS SQL ?
...
Рейтинг: 0 / 0
17.08.2018, 09:26
    #39689253
L_argo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSnap-сервер. Получить данные из хранимой процедуры
MaratIskпричем тут SET NOCOUNT ON ???
это обычная команда не возвращать служебные данные при выполнении ХПЭта обычная команда иногда необычно мешает. :)
...
Рейтинг: 0 / 0
17.08.2018, 09:26
    #39689256
L_argo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataSnap-сервер. Получить данные из хранимой процедуры
Точнее ее отсутствие.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / DataSnap-сервер. Получить данные из хранимой процедуры / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]