|
|
|
Помогите разобраться с вызовом хранимых процедур через ADO
|
|||
|---|---|---|---|
|
#18+
Помогите! Не получается получить набор данных из хр.проц. Делаю как показано ниже. Заметил, что если хп состоит из одного 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 Заранее благодарю!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2005, 09:20:05 |
|
||
|
Помогите разобраться с вызовом хранимых процедур через ADO
|
|||
|---|---|---|---|
|
#18+
1. Имена параметров в vb-коде пишутся без собаки. 2. Параметры устанавливаются так: Код: plaintext Код: plaintext 1. 2. 3. 4. 5. Select into = create table + insert, это во-первых. Во-вторых нафига нужно Select * into #t если потом из #t ничего не выбирается? Ну и в-третьих, что-то я там не вижу ни одного параметра. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2005, 09:56:36 |
|
||
|
Помогите разобраться с вызовом хранимых процедур через ADO
|
|||
|---|---|---|---|
|
#18+
А самое главное, что в ХП (приведенной ниже) последняя операция - 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 и будет тебе счастье ... тем более, что он там вообще не нужен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2005, 10:04:30 |
|
||
|
Помогите разобраться с вызовом хранимых процедур через ADO
|
|||
|---|---|---|---|
|
#18+
Во-первых, DROP тут ни при чем... Во-вторых, удаление за собой временной таблицы, тем более, что при постоянном коннекте сама собой не удалится никому еще не мешало. Не сделаешь DROP повторно процедуру не запустишь. Другое дело, на фига там эта таблица, но походу автор привел несколько кастрированный текст хранимой процедуры P.S. Попробуйте SET NOCOUNT ON в начале х.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2005, 10:18:41 |
|
||
|
Помогите разобраться с вызовом хранимых процедур через ADO
|
|||
|---|---|---|---|
|
#18+
Используйте PS из предыдущего сообщения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2005, 10:21:34 |
|
||
|
Помогите разобраться с вызовом хранимых процедур через ADO
|
|||
|---|---|---|---|
|
#18+
авторP.S. Попробуйте SET NOCOUNT ON в начале х.п. Спасибо огромное, помогло!!! P.S. А на то, что содержимое хп бессмысленно, не обращайте внимание, она будет намного сложнее и с параметрами... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2005, 11:43:15 |
|
||
|
|

start [/forum/topic.php?fid=60&fpage=315&tid=2167274]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
52ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 196ms |
| total: | 328ms |

| 0 / 0 |
