powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Transaction cannot have multiple recordsets with this cursor type.
4 сообщений из 4, страница 1 из 1
Transaction cannot have multiple recordsets with this cursor type.
    #33382675
Mike Evteev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При попытке вызвать sp на ASE 12.5 получаю

Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
Transaction cannot have multiple recordsets with this cursor type. Change
the cursor type, commit the transaction, or close one of the recordsets.

Попробовал сменить CursorLocation на adUseClient. Не помогло.



Function AddLandLine(created_by, id, area_cd, number, extension, tech_type, is_odot_line, ErrMsg)
Dim conn, cmd, affected, isFatal, p, tmp

Set conn = GetConnection
Set cmd = Server.CreateObject("ADODB.Command")

cmd.ActiveConnection = conn
cmd.CommandText = "testdb..phone_add_land_line"
cmd.CommandType = 4 ' adCmdStoredProc
cmd.Parameters.Append(cmd.CreateParameter("@created_by", adInteger, 1, , created_by))
cmd.Parameters.Append(cmd.CreateParameter("@id", adInteger, 1, , id))
cmd.Parameters.Append(cmd.CreateParameter("@area_cd", adVarChar, 1, 3, area_cd))
cmd.Parameters.Append(cmd.CreateParameter("@number", adVarChar, 1, 8, number))
cmd.Parameters.Append(cmd.CreateParameter("@extension", adVarChar, 1, 3, extension))
cmd.Parameters.Append(cmd.CreateParameter("@tech_type", adInteger, 1, , tech_type))
cmd.Parameters.Append(cmd.CreateParameter("@is_odot_line", adVarChar, 1, 1, is_odot_line))

conn.Errors.Clear
conn.BeginTrans

On Error Resume Next
cmd.Execute affected, ,128

If cmd.ActiveConnection.Errors.Count > 0 Then
AddLandLine = false
isFatal = false
For Each e in cmd.ActiveConnection.Errors
tmp = e.Description
p = InStr(1, e.Description, "Provider]")
If p > 0 then
tmp = Mid(e.Description, p, Len(e.Description))
End If
ErrMsg = ErrMsg + tmp + vbCRLF
If (e.SQLState = "") or (CInt(Mid(e.SQLState, 1, 2)) > 20) Then
isFatal = true
End If
Next
If isFatal Then
cmd.ActiveConnection.RollBackTrans
Else
cmd.ActiveConnection.CommitTrans
End If
Else
cmd.ActiveConnection.CommitTrans
AddLandLine = true
End If

Set cmd = Nothing
conn.close
Set conn = Nothing
End Function

Валится на execute.

Что делать? Как дальше жить?
...
Рейтинг: 0 / 0
Transaction cannot have multiple recordsets with this cursor type.
    #33382754
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное, Надо выбрать получаемые данные. Даже если их нет, все равно надо попытаться это сделать.
...
Рейтинг: 0 / 0
Transaction cannot have multiple recordsets with this cursor type.
    #33384642
Mike Evteev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я же сказал что код валится на попытке выполнить процедуру. О какой же выборке идет речь?

Кстати, я перешел с ODBC provider на OLE DB provider и все сразу заработало.
Что говорит о том что это проблема на уровне драйвера. Может покрутить что нужно?

К сожалению мне нужно работать именно через ODBC драйвер.
...
Рейтинг: 0 / 0
Transaction cannot have multiple recordsets with this cursor type.
    #33387937
Mike Evteev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже что драйверу не нравится множественные рекордсеты.

У меня прописан set nocount on везде, но как видно он не спасает.

В процедуре есть


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
       set nocount on 
      
       declare @ts datetime 
 
       select @ts = getdate() 
       select @extension = nullif(@extension, '') 
       ...

Можно ли драйверу сказать чтобы он игнорировал промежуточные select?
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Transaction cannot have multiple recordsets with this cursor type.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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