powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите!! Временные таблицы и ADO
10 сообщений из 10, страница 1 из 1
Помогите!! Временные таблицы и ADO
    #32042738
Артем
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.
Кто знает как получить через ADO результат выполнения ХП типа:

Create table #test(...)
insert into#test
insert into#test
select * from #test
drop table #test

ПОМОГИТЕ!!!
...
Рейтинг: 0 / 0
Помогите!! Временные таблицы и ADO
    #32042744
AAron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как вариант
1. попробуй поставить вначале SET NOCOUNT ON (не выводит разных сообщений типа ХХХ affected)
2. лучше это все оформить в ХП.
...
Рейтинг: 0 / 0
Помогите!! Временные таблицы и ADO
    #32042751
~Bazul~
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет никакой необходимости в выражении
drop table #test.
Оставь это на совесть сервера.
BOL: CREATE TABLE (T-SQL)
A local temporary table created in a stored procedure is dropped automatically when the stored procedure completes
. The table can be referenced by any nested stored procedures executed by the stored procedure that created the table. The table cannot be referenced by the process which called the stored procedure that created the table.

All other local temporary tables are dropped automatically at the end of the current session .

Global temporary tables are automatically dropped when the session that created the table ends and all other tasks have stopped referencing them. The association between a task and a table is maintained only for the life of a single Transact-SQL statement. This means that a global temporary table is dropped at the completion of the last Transact-SQL statement that was actively referencing the table when the creating session ended.

Так что смело ставь последним выражением свой селект и получай рекордсет.
...
Рейтинг: 0 / 0
Помогите!! Временные таблицы и ADO
    #32042756
Alk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Alk
Гость
на стороне клиента это
adodb.command c параметрами

на стороне сервера - процедура с выходным параметром (результат исполнения)
...
Рейтинг: 0 / 0
Помогите!! Временные таблицы и ADO
    #32042777
AAron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2All
разумеется моя рекмоендация оформить в ХП не уместна. попробуй все же SET NOCOUNT ON.
это наиболее распространенная ошибка.
...
Рейтинг: 0 / 0
Помогите!! Временные таблицы и ADO
    #32042793
Артем
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
После попытки в VB получить данные
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Dim dc As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim rs As New ADODB.Recordset

    dc.ConnectionString =  "Provider=SQLOLEDB.1 ;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=DATA;Data Source=COMPAQ;Use Procedure for Prepare= 1 ;Auto Translate=True;Packet Size= 4096 ;Workstation ID=COMPAQ;Use Encryption for Data=False;Tag with column collation when possible=False"
    dc.Open
        Set cmd.ActiveConnection = dc
        cmd.CommandType = adCmdStoredProc
        cmd.CommandText =  "dbo.spvGetNotPrintedNariads" 
        cmd.Prepared = True
        rs.CursorType = adOpenForwardOnly
        rs.CursorLocation = adUseClient
        
        Set rs = cmd.Execute()
        
        MsgBox rs.RecordCount
    dc.Close



в момент исполнения MSGBOX выскакивает ошибка
данные немогут быть получены тк рекордсет закрыт

Спасибо.
...
Рейтинг: 0 / 0
Помогите!! Временные таблицы и ADO
    #32042795
~Bazul~
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
какое выражение стоит последним в хранимой процедуре?
...
Рейтинг: 0 / 0
Помогите!! Временные таблицы и ADO
    #32042796
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AAron правильно указал причину - отсутствие в начале процедуры SET NOCOUNT ON.
Это приводит к тому, что пораждаемые командами insert into #test результаты работы воспринимаются ADO как дополнительные record set-ы, о чем и говорит ошибка "данные немогут быть получены тк рекордсет закрыт".

PS
Можете конечно поискать в коллекции recordset-ов recordset, который содержит результаты вашего select-а
...
Рейтинг: 0 / 0
Помогите!! Временные таблицы и ADO
    #32042805
Артем
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СПАСИБО БОЛЬШОЕ.
...
Рейтинг: 0 / 0
Помогите!! Временные таблицы и ADO
    #32042814
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для того чтобы получит результат выполнения процедуры необязательно использовать рекордсет

вот пример кода VB
процедура получает 2 входных параметра различных типов
и возвращает 3


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
Public Sub lastsotrinfo(codesotr As Integer, data As Date)

Dim cmd As New ADODB.Command
'@idsotr int, @ondate datetime = '01. 04 . 02 ' , @idfil int output , @iddol int output , @iddep int output

cmd.ActiveConnection = CurrentProject.Connection
cmd.CommandText =  "ts2..sotr_status" 
cmd.CommandType = adCmdStoredProc

cmd.Parameters.Append cmd.CreateParameter( "@idsotr" , adInteger, adParamInput)
cmd.Parameters( 0 ) = codesotr

cmd.Parameters.Append cmd.CreateParameter( "@ondate" , adInteger, adParamInput)
cmd.Parameters( 1 ) = SqlData(data)

cmd.Parameters.Append cmd.CreateParameter( "@idfil" , adInteger, adParamInputOutput)
cmd.Parameters( 2 ) =  0 

cmd.Parameters.Append cmd.CreateParameter( "@iddol" , adInteger, adParamInputOutput)
cmd.Parameters( 3 ) =  0 

cmd.Parameters.Append cmd.CreateParameter( "@iddep" , adInteger, adParamInputOutput)
cmd.Parameters( 4 ) =  0 

cmd.Execute

sotrinfofil = cmd.Parameters( 2 )
sotrinfodep = cmd.Parameters( 4 )
sotrinfodol = cmd.Parameters( 3 )

End Sub


ее процедура
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
ALTER PROCEDURE dbo.sotr_status
@idsotr int, @ondate int , @idfil int output , @iddol int output , @iddep int output 

AS


set  @idfil = (select ... 
set @iddol = ...
set @iddep = ...

...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите!! Временные таблицы и ADO
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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