powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Не могу из SQL сервера проселектить
8 сообщений из 8, страница 1 из 1
Не могу из SQL сервера проселектить
    #38547347
dfgdfg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пишу|:
begin distributed transaction
select I.FID1, I.FACTIVE
from SRVAPACS...TAPCACCOUNTINFO I,
SRVAPACS...TAPCCARDHOLDERREF R
where I.FID1 = R.FSACARD1
and I.FACTIVE = 1

Выдает ошибку:
OLE DB provider "LCPI.IBProvider.3" for linked server "SRVAPACS" returned message "Ошибка подготовки SQL выражения.
Dynamic SQL Error
SQL error code = -104
Token unknown - line 1, column 63
SELECT".
Сообщение 7321, уровень 16, состояние 2, строка 2
An error occurred while preparing the query "SELECT "Col1022","Col1024" FROM "TAPCCARDHOLDERREF" "Tbl1003",(SELECT "Tbl1001"."FACTIVE" "Col1022","Tbl1001"."FID1" "Col1024","Tbl1001"."FID0" "Col1023" FROM "TAPCACCOUNTINFO" "Tbl1001" WHERE "Tbl1001"."FACTIVE"=(1)) Qry1025 WHERE "Col1024"="Tbl1003"."FSACARD1"" for execution against OLE DB provider "LCPI.IBProvider.3" for linked server "SRVAPACS".


Что не так не пойму, подскажите кто знает. Структура таблиц:

CREATE TABLE "TAPCACCOUNTINFO"
(
"FACTIVE" SMALLINT NOT NULL,
"FID0" SMALLINT NOT NULL,
"FID1" INTEGER NOT NULL,
"FIDENTIFICATIONPROPS" BLOB SUB_TYPE 0 SEGMENT SIZE 80 NOT NULL,
"FSGPROPS" BLOB SUB_TYPE 0 SEGMENT SIZE 80 NOT NULL,
"FSTATUS" SMALLINT NOT NULL,
"FTEMPLATEID0" SMALLINT NOT NULL,
"FTEMPLATEID1" INTEGER NOT NULL,
CONSTRAINT "PK_TAPCACCOUNTINFO" PRIMARY KEY ("FID0", "FID1")
);

CREATE TABLE "TAPCCARDHOLDERREF"
(
"FSEK0" SMALLINT NOT NULL,
"FSEK1" INTEGER NOT NULL,
"FSACARD0" SMALLINT,
"FSACARD1" INTEGER,
"FCARDNUM" INTEGER,
"FSAHOLDER0" SMALLINT,
"FSAHOLDER1" INTEGER,
"FHOLDERNAME" VARCHAR(128),
CONSTRAINT "PK_TAPCCARDHOLDERREF" PRIMARY KEY ("FSEK0", "FSEK1")
);
...
Рейтинг: 0 / 0
Не могу из SQL сервера проселектить
    #38547364
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dfgdfg,

если используешь fb2.5 посмотри трейсом что приходит на сторону FB. Если тот запрос отдельно нормально выполняется значит что-то не так написано в MSSQL
...
Рейтинг: 0 / 0
Не могу из SQL сервера проселектить
    #38547538
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты пишешь "select I.FID1, I.FACTIVE
from SRVAPACS...TAPCACCOUNTINFO I,
SRVAPACS...TAPCCARDHOLDERREF R
where I.FID1 = R.FSACARD1
and I.FACTIVE = 1", а на выполнение отправляется "SELECT "Col1022","Col1024" FROM
"TAPCCARDHOLDERREF" "Tbl1003",(SELECT "Tbl1001"."FACTIVE" "Col1022","Tbl1001"."FID1"
"Col1024","Tbl1001"."FID0" "Col1023" FROM "TAPCACCOUNTINFO" "Tbl1001" WHERE
"Tbl1001"."FACTIVE"=(1)) Qry1025 WHERE "Col1024"="Tbl1003"."FSACARD1""?.. Ню-ню...

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Не могу из SQL сервера проселектить
    #38547809
Коваленко Дмитрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dfgdfg,

Тебе сервер (Interbase или FB ниже 2.5) по-русски сказал - ему не нравится SELECT, который начинается с 63-го символа.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
"SELECT "Col1022","Col1024"
FROM "TAPCCARDHOLDERREF" "Tbl1003",
(>>SELECT<< "Tbl1001"."FACTIVE" "Col1022",
        "Tbl1001"."FID1" "Col1024",
		"Tbl1001"."FID0" "Col1023"
 FROM "TAPCACCOUNTINFO" "Tbl1001"
 WHERE "Tbl1001"."FACTIVE"=(1)) Qry1025
WHERE "Col1024"="Tbl1003"."FSACARD1""



Такие запросы поддерживаются начиная с FB2.5. Я проверил - твой запрос на твоих таблицах на FB2.5 через MSSQL 2008 отрабатывает без проблем.

В твоем случае, тебе стоит воспользоваться инструкцией "EXEC('<тут идет прямой запрос к IB/FB>') AT <linked_server_name>".

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
begin distributed transaction;

exec('select I.FID1, I.FACTIVE
from TAPCACCOUNTINFO I,
TAPCCARDHOLDERREF R
where I.FID1 = R.FSACARD1 
and I.FACTIVE = 1') AT SRVAPACS;

commit;



Через "EXEC ... AT ..." (похоже) можно пропихнуть любой запрос. В том числе с параметрами. Пример .

Главное - не забывать экранировать одинарные кавычки в тексте запроса к FB/IB.
...
Рейтинг: 0 / 0
Не могу из SQL сервера проселектить
    #38548078
dfgdfg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Через Exec работает, но мне нужно вернуть данные в MS SQL таблицу, как их из EXEC доставать?
...
Рейтинг: 0 / 0
Не могу из SQL сервера проселектить
    #38549252
Коваленко Дмитрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dfgdfg,

Похоже, тебя спасет только OPENQUERY

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
begin distributed transaction;

select *
from OPENQUERY(SRVAPACS,'select I.FID1, I.FACTIVE
                      from TAPCACCOUNTINFO I,
                      TAPCCARDHOLDERREF R
                      where I.FID1 = R.FSACARD1 
                      and I.FACTIVE = 1');

commit;



Запрос вида
Код: sql
1.
2.
3.
4.
5.
6.
7.
insert into IBP_TEST_FB25...DUAL
select FID1
from OPENQUERY(IBP_TEST_FB25,'select I.FID1, I.FACTIVE
                      from TAPCACCOUNTINFO I,
                      TAPCCARDHOLDERREF R
                      where I.FID1 = R.FSACARD1 
                      and I.FACTIVE = 1');


компилируется без проблем.
...
Рейтинг: 0 / 0
Не могу из SQL сервера проселектить
    #38549793
dfgdfg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cпасибо большое, попробую!
...
Рейтинг: 0 / 0
Не могу из SQL сервера проселектить
    #38549848
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dfgdfg,

завязывай с оверквотингом. зачем ты цитируешь весь текст чужого письма, если в твоем ответе этот текст не нужен?
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Не могу из SQL сервера проселектить
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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