powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / AseCommand, connect to remote_server и Must declare variable
2 сообщений из 2, страница 1 из 1
AseCommand, connect to remote_server и Must declare variable
    #38747140
LargeCollider
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток!

вот столкнулся с такой штукой, которую я никак не могу понять...
скажем так: имеем некое стороннее оборудование, которое статистику о своей работе сохраняет в sybase, на данный момент версия оборудования меняется и делается разнесенная структура, т.е. два сервера master/slave, slave хранит статистику, а master описания/параметры единиц оборудования (типа где стоит, что содержит и т.д)

ранее было типа того, статистика и описания лежали в разных базах, но на одном сервере, теперь они на разных серверах.

нашел прописанный производителем на slave коннекшен на master-a, доработал софтину, чтобы перед и после исполнения запроса выполнялись
Код: sql
1.
connect to master


Код: sql
1.
disconnect from master


и все чудно работало, можно было объединять таблицы разных серверов через join-ы, до тех пор пока я не захотел передать параметр в запрос (просто тупо время выборки), ну и начал получать "Must declare variable"

код (опустил все лишнее)

полностью рабочий:
Код: c#
1.
2.
3.
4.
5.
6.
AseConnection db = new AseConnection(connString);
db.Open();
AseCommand cmd = new AseCommand("SELECT @P1", db);
cmd.Parameters.Add(DateTime.Now);
cmd.ExecuteNonQuery();
db.Close();



получающий "Must declare variable":
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
AseConnection db = new AseConnection(connString);
db.Open();

AseCommand connect = new AseCommand("connect to master", db);
connect.ExecuteNonQuery();

AseCommand cmd = new AseCommand("SELECT @P1", db);
cmd.Parameters.Add(DateTime.Now);
cmd.ExecuteNonQuery();

AseCommand disconnect = new AseCommand("disconnectt from master", db);
disconnect.ExecuteNonQuery();

db.Close();



вот это тоже полностью рабочей код (как писал ранее реальный запрос объединяет таблицы разных серверов без проблем, главное не использовать параметризацию)
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
AseConnection db = new AseConnection(connString);
db.Open();

AseCommand connect = new AseCommand("connect to master", db);
connect.ExecuteNonQuery();

AseCommand cmd = new AseCommand("SELECT 111111111", db);
//cmd.Parameters.Add(DateTime.Now);
cmd.ExecuteNonQuery();

AseCommand disconnect = new AseCommand("disconnectt from master", db);
disconnect.ExecuteNonQuery();

db.Close();



версии серверов
Adaptive Server Enterprise/15.0.3/EBF 19671 ESD#4 ONE-OFF/P/Sun_svr4/OS 5.8/ase1503/2768/64-bit/FBO/Thu Nov 10 03:10:10 2011

версия Sybase.AdoNet4.AseClient.dll - 4.157.401.0
версия sybdrvado20.dll - 3.157.401.0

добавлять прокси таблицы не могу, т.к. можем нарваться на снятие с гарантии

Собственно, кто знает что с этим делать?
...
Рейтинг: 0 / 0
AseCommand, connect to remote_server и Must declare variable
    #38747173
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Открывай документацию на ADO.Net и смотри как там делаются параметризированные запросы.
Потом открывай документацию на Sybase.AdoNet4.AseClient.dll и смотри в чем отличия этих параметрезированных запросов от стандартных.

Это:
AseCommand cmd = new AseCommand("SELECT @P1", db);
Не параметры а работа с серверными переменными, о чем ты и получаешь ругань от сервера.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / AseCommand, connect to remote_server и Must declare variable
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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