С Новым годом! Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/21: Рейтинг темы: голосов - 21, средняя оценка - 4.81
 Аватар для carga2
11 / 9 / 6
Регистрация: 07.11.2013
Сообщений: 335

Вернуть таблицу из динамического запроса

25.12.2018, 15:00. Показов 4668. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, товарищи.
За основу взято отсюда https://docs.microsoft.com/en-... erver-2017

T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
DECLARE @TableAccess TABLE(
                                                                        Param1 nvarchar(10)not null,
                                                                        Param2 int not null,
                                                                        Param3 datetime not null,
                                                                        Param4 bit not null)
DECLARE @SQLString nvarchar(500);  
DECLARE @ParmDefinition nvarchar(500);  
SET @SQLString = ' INSERT INTO @TableAccessOUT (Param1,Param2,Param3,Param4) 
                              SELECT Param1,Param2,Param3,Param4 
                              FROM OPENROWSET(''Microsoft.ACE.OLEDB.15.0'', ''C:\Паспорт.accdb''; ''admin'';'''',TableAccess)'
SET @ParmDefinition = N'@TableAccessOUT TABLE(
                                                                        Param1 nvarchar(10)not null,
                                                                        Param2 int not null,
                                                                        Param3 datetime not null,
                                                                        Param4 bit not null) OUTPUT';  
EXECUTE sp_executesql @SQLString, @ParmDefinition, @TableAccessOUT=@TableAccess OUTPUT;  
SELECT * from  @TableAccess;
Но у меня не работает.
Возвращает ошибку
Сообщение 156, уровень 15, состояние 1, строка 1
Неправильный синтаксис около ключевого слова "TABLE".
Сообщение 1087, уровень 15, состояние 2, строка 1
Необходимо объявить табличную переменную "@TableAccessOUT".

В чем проблема?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.12.2018, 15:00
Ответы с готовыми решениями:

Создание динамического запроса на вставку в таблицу PL/SQL
Приветствую знатоки оракла.. У меня возник один вопрос и что то даже идей нет как его решить подскажите пожалуйста! Суть проблемы есть...

Создание динамического запроса в С#
Добрый день! Подскажите пожалуйста есть некоторые параметры которые выводятся в checkedListBox1. Пользователь выбирает требуемые...

Ошибка динамического запроса
при вводе запроса выскакивает сообщение , не могу понять в чем причина, может с interbase по другому записываются таблицы, хотя на форме...

4
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
25.12.2018, 15:37
Табличная переменная не есть переменная табличного типа.
Возвращать значения через параметры табличного типа все равно нельзя.
Промежуточная таблица в данном коде вообще лишняя.
T-SQL
1
2
3
4
5
6
DECLARE @SQLString nvarchar(500);  
 
SET @SQLString = N'SELECT Param1,Param2,Param3,Param4 
                              FROM OPENROWSET(''Microsoft.ACE.OLEDB.15.0'', ''C:\Паспорт.accdb''; ''admin'';'''',TableAccess)'
 
EXECUTE sp_executesql @SQLString;
0
 Аватар для carga2
11 / 9 / 6
Регистрация: 07.11.2013
Сообщений: 335
25.12.2018, 16:24  [ТС]
Цитата Сообщение от invm Посмотреть сообщение
Промежуточная таблица в данном коде вообще лишняя.
Целевой запрос будет не много иным.
T-SQL
1
2
SET @SQLString = N'SELECT Param1,Param2,Param3,Param4 
                              FROM OPENROWSET(''Microsoft.ACE.OLEDB.15.0'', ''' + @FileName + '''; ''admin'';'''',TableAccess)'
так работает.
Задача в том, чтобы получить таблицу из бд аксеса и раскидать значения определенных строк по разным таблицам MSSQL Server. Что мне использовать для этого?
0
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
25.12.2018, 16:31
Лучший ответ Сообщение было отмечено carga2 как решение

Решение

Временную таблицу
T-SQL
1
2
3
4
5
create table #t (...);
 
insert into #t
 (....)
 exec sp_executesql @SQLString;
1
 Аватар для carga2
11 / 9 / 6
Регистрация: 07.11.2013
Сообщений: 335
25.12.2018, 16:55  [ТС]
Цитата Сообщение от invm Посмотреть сообщение
create table #t (...);
insert into #t
*(....)
*exec sp_executesql @SQLString;
Вы имеете ввиду так:
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
 create table #TableAccess (
            Id int,
            Param1 nvarchar(10),
            Param2 int,
            Param3 datetime,
            Param4 bit
    )
 
    SET @sql = ' INSERT INTO #TableAccess (Id,Param1,Param2,Param3,Param4) SELECT * FROM OPENROWSET(''Microsoft.ACE.OLEDB.15.0'', ''' + @FileName + '''; ''admin'';'''',TableAccess)'
    EXEC sp_executesql @sql
 
    SELECT * FROM #TableAccess
?

Добавлено через 1 минуту
Да, действительно, так работает.
Странно, на каком-то этапе была попытка выполнить такой подход, но что-то не работало.
invm, Спасибо за помощь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.12.2018, 16:55
Помогаю со студенческими работами здесь

Выполнение динамического запроса
Ку, подскажите как выполнить динамический запрос. Я так понимаю что execute нужно выполнять ток в PL/PGSql но у меня чет не получается....

Вернуть результат запроса
Есть url адрес https://www.ts.kg/show/download/file/6942/UJAXA3DcWR-XMPMfGibEVQ/1559083264 при перехооде по нему в браузере...

Вернуть результаты запроса
Здравствуйте! Такой вопрос: надо создать хранимую процедуру, которая будет возвращать таблицу-результат запроса. Каким образом это можно...

вернуть значение SQL запроса в C#
Здравствуйте! как можно получить значение колонки isAdmin? public static bool isAdmin(string Login) { try ...

Вернуть данные из ajax запроса
Доброго времени суток, форумчане! Подскажите, пожалуйста как вытащить данные из ajax запроса? executeScalarAjaxRequest: function...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru