Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
MSSql server и процедуры через адо
|
|||
|---|---|---|---|
|
#18+
Привет всем. Короче вызывваю я процедуру на SQL сервере все происходит нормально но почемуто рекордсет сам по себе закрывается. Когда-то я уже подымал эту тему на форуме, тогда все решилось подстановкой set nocount on в процедеру. Сейчас же это не срабатывает, причем особо нового в процедуре на появилось, ну транзакция и пару апдейтов. да через одбс все работает. Сейчас смотрю справку по скл серверу и на мсдн, но никак не могу ничего найти. Бросте кто-то информацию где можно поподробней об этом почитать или как это можно обойти ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2004, 16:38 |
|
||
|
MSSql server и процедуры через адо
|
|||
|---|---|---|---|
|
#18+
Ты уверен что процедура возвращает результаты? Коды в студию! Вызова и собственно процедуры. Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2004, 16:49 |
|
||
|
MSSql server и процедуры через адо
|
|||
|---|---|---|---|
|
#18+
вызываю вот так record.Open "exec recalc '"+docnum+"','"+workcode+"','"+link+"'" а вот и процедура CREATE PROCEDURE recalc @docnum varchar(32), @workcode int, @link int AS SET NOCOUNT ON declare @nError int declare @bTrans int declare @ready int declare @markcode_ref int declare @markcode_order int declare @modelcode_order int declare @markdefault int declare @fixed char(1) declare @workname varchar(100) declare @mechname varchar(64) declare @moneyinwork int declare @worktariff decimal(10,2) declare @workprice decimal(10,2) declare @rise_work decimal(10,2) set @bTrans = 0 set @nError = 0 set @worktariff= 0.0 select @workprice=AW,@fixed=FIXED,@ready=READY,@markcode_order=MARK_CODE,@modelcode_order=MODEL_CODE,@rise_work=work_percent from ORDERS Where ORDER_NUM=@docnum if @fixed='1' OR @ready=1 OR @docnum = '' OR @docnum IS NULL begin set @nError = 13002 goto lEnd end select @workname=W_NAME from AWORK where W_CODE=@workcode if @@ROWCOUNT=0 begin set @nError = 13061 goto lEnd end if NOT EXISTS (select WORK_CODE from ORDERAV where ORDER_NUM=@docnum and WORK_CODE=@workcode) begin set @nError = 13064 goto lEnd end select @markcode_ref=MARK_CODE from AMODEL Where M_CODE=(select M_CODE from AWORK where W_CODE=@workcode) if @@ROWCOUNT <=0 begin set @nError = 13062 goto lEnd end select @markdefault=MARK_DEFAULT,@moneyinwork=MONEY_IN_WORK from AMARK Where MARK_CODE=@markcode_ref BEGIN TRAN tran_calcwork set @bTrans = 1 if @moneyinwork<>0 begin Select @worktariff=WORK_TARIFF From AWORK Where W_CODE=@workcode if @@ERROR<>0 begin set @nError = @@ERROR goto lEnd end end else begin Select @worktariff=SUM(O_TARIFF) From ORDERAVOPER Where ORDER_NUM=@docnum and ORDER_LINK=@link if @@ERROR<>0 begin set @nError = @@ERROR goto lEnd end end Update ORDERAV Set WORK_TARIFF=@worktariff,PRICE_AV=WORK_TARIFF*@workprice Where ORDER_NUM=@docnum and ORDER_LINK=@link if @@ERROR<>0 begin set @nError = @@ERROR goto lEnd end set @worktariff = 0.0 Select @worktariff=SUM(WORK_TARIFF) From ORDERAV Where ORDER_NUM=@docnum Update ORDERS Set SUMMA_AW=@worktariff, SUMMA=@worktariff*@workprice*(100-@rise_work)*0.01 Where ORDER_NUM=@docnum if @@ERROR<>0 begin set @nError = @@ERROR goto lEnd end if @@ERROR<>0 begin set @nError = @@ERROR goto lEnd end lEnd: if @nError <> 0 begin if @bTRans = 1 ROLLBACK TRAN tran_calcwork end else begin if @bTRans = 1 begin COMMIT TRAN tran_calcwork end end select @nError --return @nError GO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2004, 17:17 |
|
||
|
MSSql server и процедуры через адо
|
|||
|---|---|---|---|
|
#18+
Не совсем разобрался в структуре(ты бы его отформатировал), но ИМХО, последним селектом у тебя идет возврат ошибки, естессно только он и будет всегда. Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2004, 17:35 |
|
||
|
MSSql server и процедуры через адо
|
|||
|---|---|---|---|
|
#18+
Не совсем тебя понял, что ты имееш ввиду под естессно только он и будет всегда [/FIXED ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2004, 17:46 |
|
||
|
MSSql server и процедуры через адо
|
|||
|---|---|---|---|
|
#18+
Вместо результатов ты получаешь значение переменной которая должна содержать ошибку и если ее нет то пустой набор и как следствие закрытый рекордсет. ИМХО. Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2004, 18:38 |
|
||
|
MSSql server и процедуры через адо
|
|||
|---|---|---|---|
|
#18+
я делал в конце проуедури специально какуюто выборку с любой таблици, результат тотже, кроме того в начале процедуры идет присвоение переменной значения set @nError = 0, тоесть рекордсет не пуст ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2004, 18:53 |
|
||
|
MSSql server и процедуры через адо
|
|||
|---|---|---|---|
|
#18+
Да, не заметил сначала. Лучше, в следующий раз вставляй внутри тега SRC тогда гораздо лучше видно и операторы подсвечены. Попробуем разобраться. Какие парамерты открытия рекодсета? Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2004, 19:12 |
|
||
|
MSSql server и процедуры через адо
|
|||
|---|---|---|---|
|
#18+
ты имеешь ввиду тип курсора, блокировки, где курсор? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2004, 19:16 |
|
||
|
MSSql server и процедуры через адо
|
|||
|---|---|---|---|
|
#18+
все по умолчанию record.Open "exec procname" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2004, 19:33 |
|
||
|
MSSql server и процедуры через адо
|
|||
|---|---|---|---|
|
#18+
Попробуй record.CursorLocation=adUseClient Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2004, 20:04 |
|
||
|
MSSql server и процедуры через адо
|
|||
|---|---|---|---|
|
#18+
Неа, то же самое, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2004, 20:36 |
|
||
|
MSSql server и процедуры через адо
|
|||
|---|---|---|---|
|
#18+
Просто запусти из QA. Возвращает ли она данные. Вот это Код: plaintext 1. 2. 3. 4. 5. 6. 7. Зачем 2 раза? После любой операции @@ERROR сбрасывается. Код: plaintext 1. 2. 3. Если после условия присутствует только одна строка то Begin End не нужно. Надо поколупаться. Выложи скрипт таблички и скрипт заполенения несколькими строками тестовых данных. Я дома поковыряю. Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2004, 21:16 |
|
||
|
MSSql server и процедуры через адо
|
|||
|---|---|---|---|
|
#18+
Magnus. Дело в том, что при выполнении этой процедуры вызываются еще как минимум два тригера на обновление. которые в свою очередь тоже могут вызывать (может неправильно сказал, не знаю как точно будет вызывает или порождает) еще тригеры. А если дать тебе одну таблицу - придется давать все таблицы, а их в этом процесе ох как много. Чере qa процедура идет и возвращает рекордсет, но qa насколько я знаю использует одбс драйвер для подключения к серваку. А проблемы с синтаксисом - это я так шаманил немного и видимо не поубирал лишнее. Прикол в том что когда использую драйвер SQLOLEDB.1 эта хрень и происходит, если же драйвер MSDASQL.1 - все путем, да кстати у меня стоит мдак 2,8 может там глюк какой-то, я просто не могу понять или это баг от билла или так задумано и в этом есть какой-то смысл, что-то полезное,, а нормального описания этого на мсдн нет, или я плохо искал. Я уже смотрю в сторону использования драйвера MSDASQL.1. По своему пусть небольшому опыту, выдел как SQLOLEDB.1 глючил, говорил, что сервака нету. при этом MSDASQL.1 работал как нивчем не бывало и как мне кажется он немного быстрее, если я не прав извините. Но меня настораживает одно, SQLOLEDB.1 специально писался для сюл сервака и я так понимаю, что в нем есть то чего нету в MSDASQL.1 или я неправ, тогда исправте? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 09:19 |
|
||
|
MSSql server и процедуры через адо
|
|||
|---|---|---|---|
|
#18+
SQLOLEDB действительно заточен под сервер и должен(по идее) работать лучше. Да уж, проблема серьезная. Явно баг. Кое что накопал у мелкомягких, но в основном какие то невнятные сьезды. Попробуем проверить. На какой машине запускаешь? Сколько камней? Мозгов хватает? На других пробовал? Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 15:38 |
|
||
|
MSSql server и процедуры через адо
|
|||
|---|---|---|---|
|
#18+
Еще кое что. В QA возвращается только один набор записей? Какие либо сообщения есть? Запусти трассу на сервер и отлови что конкретно выполняется. Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 15:54 |
|
||
|
MSSql server и процедуры через адо
|
|||
|---|---|---|---|
|
#18+
Машина то селерон 1 г 512 оперативки, свободного на с 2,5 г тестовый сервак п-3 800 512 40 г ,sql 2000 sp3. Я сейчас думаю может я чего-то из компонент не подключил,может ему то ище чегото нужно, а подключено адо 2,8 и ole db service conponents 1.0, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 15:56 |
|
||
|
MSSql server и процедуры через адо
|
|||
|---|---|---|---|
|
#18+
на других машынах таже проблема, причем на тех стоит 2,6 мдак. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 16:03 |
|
||
|
MSSql server и процедуры через адо
|
|||
|---|---|---|---|
|
#18+
Пока хорошо, а трасса? Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 16:14 |
|
||
|
MSSql server и процедуры через адо
|
|||
|---|---|---|---|
|
#18+
А это ole db service conponents 1.0 зачем? Даталлинки строишь? Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 16:18 |
|
||
|
MSSql server и процедуры через адо
|
|||
|---|---|---|---|
|
#18+
траса то 100 на свиче ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 16:24 |
|
||
|
MSSql server и процедуры через адо
|
|||
|---|---|---|---|
|
#18+
чета я нипонил. При чем тут свич? Я говорю о Trace в Profiler. :) А ты о чем? Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 16:44 |
|
||
|
MSSql server и процедуры через адо
|
|||
|---|---|---|---|
|
#18+
а я скорости сетки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 16:49 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=32457567&tid=2169867]: |
0ms |
get settings: |
5ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
44ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 323ms |

| 0 / 0 |
