powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Помогите разобраться с вызовом хранимых процедур через ADO
6 сообщений из 6, страница 1 из 1
Помогите разобраться с вызовом хранимых процедур через ADO
    #33242486
AlexeyKo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите!
Не получается получить набор данных из хр.проц. Делаю как показано ниже.
Заметил, что если хп состоит из одного select'a, то все работает, но вот если в тело хп, к примеру, добавить временную таблицу и вставить select * into #temptable from ... , то программа закрывает recordset сразу после вызова cmd.Execute, а обращение к oRecordset.EOF дает ошибку: "Операция не допускается, если объект закрыт"
При этом из QA все выглядит замечательно...

Dim conn As New ADODB.Connection
Dim cmd As ADODB.Command
Dim oRecordset As ADODB.Recordset

conn.ConnectionString = "Provider=SQLOLEDB;Server=(local);Initial Catalog=SBODemo_RU76;Trusted_Connection=Yes"
conn.CursorLocation = adUseClient
conn.Open

Set cmd = New ADODB.Command
cmd.Prepared = False
cmd.ActiveConnection = conn
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "Test"
cmd.Parameters.Item("@WCode").Value = strWarehouse
cmd.Parameters.Item("@CCode").Value = "C1000"
cmd.Parameters.Item("@Year").Value = "2005"
Set oRecordset = cmd.Execute
i = 1
While Not oRecordset.EOF
sht.Cells(1, i) = oRecordset.Fields(0).Value
i = i + 1
oRecordset.MoveNext
Wend
Set oRecordset = Nothing
Set cmd = Nothing
conn.Close
Set conn = Nothing


при такой хп все ОК:
CREATE PROCEDURE [dbo].[Test] AS
Select Code, Name From [dbo].[@One_MainWh]
GO

при такой хп все очень плохо :(
CREATE PROCEDURE [dbo].[Test] AS
Select * into #t From [dbo].[@One_MainWh]
Select Code, Name From [dbo].[@One_MainWh]
drop table #t
GO

Заранее благодарю!!!
...
Рейтинг: 0 / 0
Помогите разобраться с вызовом хранимых процедур через ADO
    #33242572
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Имена параметров в vb-коде пишутся без собаки.
2. Параметры устанавливаются так:
Код: plaintext
cmd.Parameters.Append cmd.CreateParameter("WCode" ...) 
или так:
Код: plaintext
1.
2.
3.
4.
5.
cmd.CommandType = adCmdStoredProc
cmd.ActiveConnection = conn
cmd.CommandText = "Test"
cmd.Parameters.Refresh
cmd.Parameters("WCode").Value = strWarehouse
3. авторпри такой хп все очень плохо :(
Select into = create table + insert, это во-первых. Во-вторых нафига нужно Select * into #t если потом из #t ничего не выбирается? Ну и в-третьих, что-то я там не вижу ни одного параметра.
...
Рейтинг: 0 / 0
Помогите разобраться с вызовом хранимых процедур через ADO
    #33242595
Toking
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А самое главное, что в ХП (приведенной ниже) последняя операция - drop, которая не возвращает никаких записей ...

CREATE PROCEDURE [dbo].[Test] AS
Select * into #t From [dbo].[@One_MainWh]
Select Code, Name From [dbo].[@One_MainWh]
drop table #t
GO


Убей drop и будет тебе счастье ... тем более, что он там вообще не нужен
...
Рейтинг: 0 / 0
Помогите разобраться с вызовом хранимых процедур через ADO
    #33242644
Дурак
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во-первых, DROP тут ни при чем...

Во-вторых, удаление за собой временной таблицы, тем более, что при постоянном коннекте сама собой не удалится никому еще не мешало.

Не сделаешь DROP повторно процедуру не запустишь.

Другое дело, на фига там эта таблица, но походу автор привел несколько кастрированный текст хранимой процедуры

P.S. Попробуйте SET NOCOUNT ON в начале х.п.
...
Рейтинг: 0 / 0
Помогите разобраться с вызовом хранимых процедур через ADO
    #33242655
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Используйте PS из предыдущего сообщения
...
Рейтинг: 0 / 0
Помогите разобраться с вызовом хранимых процедур через ADO
    #33242979
AlexeyKo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторP.S. Попробуйте SET NOCOUNT ON в начале х.п.

Спасибо огромное, помогло!!!

P.S.
А на то, что содержимое хп бессмысленно, не обращайте внимание, она будет намного сложнее и с параметрами...
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Помогите разобраться с вызовом хранимых процедур через ADO
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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