ADO не позволяет мне создавать SQL-запросы такого вида
CREATE TABLE #t(...)
INSERT INTO #t ....
SELECT * FROM #t
Ругается такими словами
'Multiple-step OLE DB operation generated errors. Check OLE DB status value, if available. No work was done.'
При этом команда на выполнение на SQL-сервер уходит.
Потом выдает такой Exception
'Query1: CommandText does not return a record set'
Возможно ли обмануть коварный ADO? Как? Возможно есть патчи или более новые версии, которым чужда такая ограниченность.
Здравствуйте, Мойша, Вы писали:
М>ADO не позволяет мне создавать SQL-запросы такого вида
М>CREATE TABLE #t(...) М>INSERT INTO #t .... М>SELECT * FROM #t
М>Ругается такими словами М>'Multiple-step OLE DB operation generated errors. Check OLE DB status value, if available. No work was done.' М>При этом команда на выполнение на SQL-сервер уходит.
М>Потом выдает такой Exception М>'Query1: CommandText does not return a record set'
М>Возможно ли обмануть коварный ADO? Как? Возможно есть патчи или более новые версии, которым чужда такая ограниченность.
выполняй его не Execute, а ExecuteNonQuery
... << RSDN@Home 1.0 beta 6a >>
Re[2]: ADO
От:
Аноним
Дата:
25.02.03 14:06
Оценка:
Здравствуйте, mogadanez, Вы писали:
M>выполняй его не Execute, а ExecuteNonQuery
Уточню. Компонента, которую я не могу заставить работать — это TADOquery. Метода ExecuteNonQuery я в ней почему-то не нашел... А нужны мне как раз результаты того, что селектится, так что судя по названию NonQuery вряд ли подойдет .
Re: ADO
От:
Аноним
Дата:
25.02.03 14:17
Оценка:
Здравствуйте, Мойша, Вы писали:
М>ADO не позволяет мне создавать SQL-запросы такого вида
М>CREATE TABLE #t(...) М>INSERT INTO #t .... М>SELECT * FROM #t М>Возможно ли обмануть коварный ADO? Как? Возможно есть патчи или более новые версии, которым чужда такая ограниченность.
а ты 3-мя разными запросами выполни:
CREATE и INSERT по коннекшену (DDL и DML в разных batch'ах)
SELECT по query
Re[2]: ADO
От:
Аноним
Дата:
25.02.03 14:26
Оценка:
Здравствуйте, Аноним, Вы писали:
А>а ты 3-мя разными запросами выполни: А>CREATE и INSERT по коннекшену (DDL и DML в разных batch'ах) А>SELECT по query
Уточню задачу. Таблица #t является временной, т.е. ее видно только в пределах запроса, и служит для упрощения запроса. Можно было написать один пятиэтажный запрос, выбирающий из нескольких таблиц данные в одну сводную, но не хочется. Хочется создать временную, заполнить ее данными и получить RecordSet. BDE позволял это сделать, не задавая никаких вопросов. Я хочу знать с чем я столкнулся, т.е. это принципиальное ограничение ADO или есть какой-то неочевидный способ.
Re[3]: ADO
От:
Аноним
Дата:
25.02.03 14:42
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Уточню задачу. Таблица #t является временной, т.е. ее видно только в пределах запроса, и служит для упрощения запроса.
а какой SQL-сервер, если не секрет, уж не MS ли ?
там временные таблицы создаются на соннекшн, а не на запрос.
А>Уточню задачу. Таблица #t является временной, т.е. ее видно только в пределах запроса, и служит для упрощения запроса. А>Я хочу знать с чем я столкнулся, т.е. это принципиальное ограничение ADO или есть какой-то неочевидный способ.
Во первых, не плохобы знать все-таки что за сервер БД.
Во вторых, временная таблица не в пределах запроса, а в пределах коннекшена, если ее в конце батча не грохнуть конечно.
В третьих ошибка опять же скорее всего не в ADO, а в синтаксисе SQL.
В ADO не должно быть никаких ограничений и неочевидных способов в данном случае, все должно работать, если без ошибок написано конечно...
M>Во первых, не плохобы знать все-таки что за сервер БД.
И если это MSSQL, то запихни в хранимку все издевательства над временными таблицами и не мучайся..
A>DELETE TABLE #t
Наверное все-таки DROP TABLE...
A>пора это как-то в факи заносить
Хм... Только проверить надо-бы перед этим, а то не красиво получится...