powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Выборка из хранимой процедуры
10 сообщений из 10, страница 1 из 1
Выборка из хранимой процедуры
    #32030709
Seryog@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброе время суток! Господа! Как select'ом взять данные из хранимой процедуры, возвращающей таблицу? Невыносимо нужно... Просто select * from sp_Name конечно же ничего не дает...
...
Рейтинг: 0 / 0
Выборка из хранимой процедуры
    #32030727
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Невыносимо нужно...
Наверное всё-таки невыносимо хочется

В лоб это не сделать.
Есть 3 варианта:
1. Написать вместо процедуры табличную функцию. Но функция не может иметь побочный эфект, так что это может Вам и не подойти.
2. Создать временную таблицу соответствующей структуры и использовать синтаксис insert #TBL exec sp_Name. Но учтите что такая конструкция не допускает вложености - в процедуре оно уже не должно использоваться.
3. Использовать OPENQUERY. Смотрите хелп, сам я никогда им не пользовался.
...
Рейтинг: 0 / 0
Выборка из хранимой процедуры
    #32030733
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я пользовался OpenQuery
Работает, конечно, но это надо свой же сервер открыть для доступа (типа прилинковать самого себя). Как устойчиво - не знаю. Одно только плохо - запускаться будет с правами пользователя, запустившего процедуру, а не владельца (как Execute)

Обычно использую insert во временную таблицу.
...
Рейтинг: 0 / 0
Выборка из хранимой процедуры
    #32030739
Варяг
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Часто задаваемый вопрос.
Есди проц гонит в ровсет, то работает такая схема
CREATE TABLE #T1
( iname varchar(60),
idiscr varchar(60) ,
ikeys varchar(30)
)

insert #t1 exec sp_helpindex 'authors' -- !!!!!!!!!
select * from #t1
drop table #t1
сначала надо узнать имена колонок выдаваемых ХП
...
Рейтинг: 0 / 0
Выборка из хранимой процедуры
    #32030753
Seryog@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я уже вроде дошел сам до того, что можно создать и функцию, но... это к сожалению мне ничего не дало.
Весь вопрос в том, что я в Access пытаюсь передать параметры в SQL Server, ну вот так сложилось до меня еще, что клиенты на аксесе писаны... Так вот единственный способ похоже - переписывать запрос каждый раз заново, но и тут беда... Запрос не работает в обычном виде как для exec'а, так и для select'а из функции - он функцию не принимает... единственный вариант - создавать запрос к серверу, но как его переписывать заново - пока не нашел.
То есть :

1) Как я понял, данные передавать в хранимую процедуру
можно только путем переписывания запроса заново, т.к. у
готового запроса из VBA я ничего поменять не смог. Теперь
запрос создается так:

Private Sub Button_Click()
Dim dbs As DAO.Database
Dim qdf As DAO.QueryDef
Dim strSQL As String

Set dbs = CurrentDb
strSQL = "SELECT * FROM Table1 IN ''
[ODBC;DSN=DB;UID=Sergey;DATABASE=DB;Trusted_Connection=Yes]
where (F1=4)"
DoCmd.DeleteObject acQuery, "SecondQuarter"
Set qdf = dbs.CreateQueryDef("SecondQuarter", strSQL)

End Sub


Воооот....
2) А вот созданое таким образом обращение к хранимой
процедуре или функции не работает, при
select * from fun1(1,5)
он пишет, что это ошибка... ну, функций не знает аксес,
что ж теперь...

Остается что? Запрос к серверу. там работает как
select * from fun1(1,5) так и
exec sproc1 1,5 или просто sproc1 1,5

А теперь вопрос. Из VB можно создать не запрос, а запрос к
серверу???????

Это я копирнул то, что я на Аксесовском форуме постил, но может и тут кто знает?

А за ответы - гросс спасибо.
...
Рейтинг: 0 / 0
Выборка из хранимой процедуры
    #32030756
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ничего я не понял, если честно, из объяснений Seryog@.
Чего, в акцессе нельзя хранимую процедуру вызвать, что ли, и параметры ей передать? Я с ним не работал, но очень уж странное оно, объяснение.
...
Рейтинг: 0 / 0
Выборка из хранимой процедуры
    #32030780
Seryog@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно. Но статично. То есть в запросе к серверу нельзя указать параметры, а только готовые данные.
например:
select * from TB where FLD = 2, а не select * from TB where FLD = VAR
а мне нужно
exec SP VAR, VAR или select * from FUNC(VAR,VAR)
единственный способ - переписывать запрос из модуля с подставлением ЗНАЧЕНИЙ, то есть чтобы в запросе были уже ЧИСЛА, а не переменные. Но я нашел как можно создавать только внутренние запросы, они могут работать с ODBC, но только с таблицами и выборками, а вот процедуры и функции они воспринимают как ошибку в запросе. Так вот вопрос именно в том теперь чтобы создавать не внутренние запросы, а именно запросы к серверу... как это делать - Бог знает...
...
Рейтинг: 0 / 0
Выборка из хранимой процедуры
    #32030786
Ольга
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> exec SP VAR, VAR или select * from FUNC(VAR,VAR)
Если Вам необходимо передать значение FUNC(VAR,VAR)то придется пользоваться Вашим
select * from TB where FLD = ... А вот чему равно:
Эта функция FUNC(VAR,VAR) должна быть на клиенте, а записывается так where FLD = Format(FUNC(VAR,VAR))
Это типа запроса с параметром, где параметр определяется в момент выполнения запроса.

Причем, если код типа
DIM str as STRING
str="select * from TB where FLD = "
то далее
str=str & Format(FUNC(VAR,VAR))

Все вышесказанное- решение в лоб.
А знать хотелось бы
Клиент работает с проетом adp, с присоединенными таблицами, или каждый запрос коннкетится?
...
Рейтинг: 0 / 0
Выборка из хранимой процедуры
    #32030788
Seryog@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это как раз работает - если select * from TAB и т.д.
А вот если select * from func(1,5) то всё... т.к. запрос типа
SELECT * FROM Table1 IN '' [ODBC;DSN=DB;UID=Sergey;DATABASE=DB;Trusted_Connection=Yes]where (F1=4)"
выполняется все равно на клиенте и только подбирает таблицы с сервера.
функцию я имел ввиду SQL Server'а и выполняться она и должна на сервере, иначе какой смысл? И, кстати, OpenQuery то же самое - не воспримется таким запросом.

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

На самом деле, я конечно уже ушел от тем SQL Servera, тут, я думаю, вопрос чисто аксесовский, т.к. всё кроме передачи параметров работает.... Не обессутьте уж %)) Может кто и знает случайно.
...
Рейтинг: 0 / 0
Выборка из хранимой процедуры
    #32030796
Ольга
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот Вы сами и ответили: присоединенные таблицы
А функции не присоединяются и XП тоже.
Если бы был проект adp -там есть хранимые процедуры с сервера.
Придется Вам как-то хитрить.
Но это уже всем не интересно.
Если есть вопросы, напишите свой e-mail.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Выборка из хранимой процедуры
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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