Помогите разобраться с вызовом хранимых процедур через ADO - VB

Узнай цену своей работы

Формулировка задачи:

Помогите!
Не получается получить набор данных из хр.проц. Делаю как показано ниже.
Заметил, что если хп состоит из одного 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
Заранее благодарю!!!

Решение задачи: «Помогите разобраться с вызовом хранимых процедур через ADO»

textual
Листинг программы
cmd.Parameters.Append cmd.CreateParameter(<font color="teal">"WCode"</font> ...) 

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4 из 5
Похожие ответы