Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Помогите разобраться с вызовом хранимых процедур через ADO / 6 сообщений из 6, страница 1 из 1
31.08.2005, 09:20:05
    #33242486
AlexeyKo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с вызовом хранимых процедур через ADO
Помогите!
Не получается получить набор данных из хр.проц. Делаю как показано ниже.
Заметил, что если хп состоит из одного 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
31.08.2005, 09:56:36
    #33242572
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с вызовом хранимых процедур через ADO
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
31.08.2005, 10:04:30
    #33242595
Toking
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с вызовом хранимых процедур через ADO
А самое главное, что в ХП (приведенной ниже) последняя операция - 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
31.08.2005, 10:18:41
    #33242644
Дурак
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с вызовом хранимых процедур через ADO
Во-первых, DROP тут ни при чем...

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

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

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

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

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

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


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