Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Transaction cannot have multiple recordsets with this cursor type.
|
|||
|---|---|---|---|
|
#18+
При попытке вызвать 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. Что делать? Как дальше жить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2005, 21:27 |
|
||
|
Transaction cannot have multiple recordsets with this cursor type.
|
|||
|---|---|---|---|
|
#18+
Наверное, Надо выбрать получаемые данные. Даже если их нет, все равно надо попытаться это сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2005, 23:03 |
|
||
|
Transaction cannot have multiple recordsets with this cursor type.
|
|||
|---|---|---|---|
|
#18+
Я же сказал что код валится на попытке выполнить процедуру. О какой же выборке идет речь? Кстати, я перешел с ODBC provider на OLE DB provider и все сразу заработало. Что говорит о том что это проблема на уровне драйвера. Может покрутить что нужно? К сожалению мне нужно работать именно через ODBC драйвер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2005, 16:14 |
|
||
|
Transaction cannot have multiple recordsets with this cursor type.
|
|||
|---|---|---|---|
|
#18+
Похоже что драйверу не нравится множественные рекордсеты. У меня прописан set nocount on везде, но как видно он не спасает. В процедуре есть Код: plaintext 1. 2. 3. 4. 5. 6. 7. Можно ли драйверу сказать чтобы он игнорировал промежуточные select? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2005, 21:41 |
|
||
|
|

start [/forum/topic.php?fid=55&fpage=93&tid=2013249]: |
0ms |
get settings: |
8ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
38ms |
get tp. blocked users: |
2ms |
| others: | 228ms |
| total: | 359ms |

| 0 / 0 |
