Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
StoredProc
|
|||
|---|---|---|---|
|
#18+
У меня есть такая хранимая процедура: " CREATE PROCEDURE dbo.PROCRoubli @PrPROCRoub varchar(20), @UserName varchar(50), @IdRegisterRoub int, @IdBag int, @Summa float, @IdSymbol int, @DateBag datetime, @PrDaysOff bit, @Route varchar(50), @FIORunner1 varchar(50), @FIORunner2 varchar(50), @DateReg datetime, @UserNameRecount varchar(50),@UserGlavKassir varchar(50), @UserNameControl varchar(50), @SummaRecount float, @Deficit float, @Surplus float, @IdBagRoub int, @DateRecount datetime, @UserNameChange varchar(50), @ERR int output AS BEGIN tran BagRoubli // первое условие if @PrPROCRoub='new' begin insert into RegisterRoub(id_registerroub, DateReg, UserName, Route, FIORunner1, FIORunner2) values (@idregisterroub, @DateReg, @UserName, @Route, @FIORunner1, @FIORunner2) end //второе условие if @PrPROCRoub='delete' begin Delete from BagWithRoub where id_bagrub=@IdBagRoub end if(@@error!=0) begin rollback tran BagRoubli select @ERR=1 end else begin select @ERR=0 commit tran BagRoubli end GO " Проблема в том, что второе условие почему-то отрабатывает, только тогда, когда отработало первое условие!! Т.е., по нажатию одной кнопки в приложении, идет вставка данных, по нажатию другой можно удалить эти данные. Если, данные вставил и закрыл приложение, то после нового запуска эти данные не нельзя удалить, пишет EDBEngineEror "Invalid parametr". А если, все делаю сразу, то все нормально! Вот так удалюю: " with DataModuleKassa.StoredProcRoubli do begin Close; ParamByName('@PrPROCRoub').AsString:='delete'; ParamByName('@IdBagRoub').AsInteger:=IdBagRoub; ParamByName('@ERR').AsInteger:=1; Prepare; ExecProc; if(ParamByName('@ERR').AsInteger=1) then begin MessageDlg('Сумка не была удалена! Попытайтесь еще раз!',mtError, [mbOk], 0); Close; end else begin MessageDlg('Сумка была удалена!',mtInformation, [mbOk], 0); Close; " Может все дело в транзакции? Подскажите? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2002, 07:50 |
|
||
|
StoredProc
|
|||
|---|---|---|---|
|
#18+
по-моему всё просто - если у тебя не отрабатывает первое условие, то на самом деле у тебя второе отрабатывает, но потом идёт откат т.к. @@error!=0. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2002, 11:26 |
|
||
|
StoredProc
|
|||
|---|---|---|---|
|
#18+
И вообще не ясно, зачем пихать в одну процедуру и вставку и удаление. Разнеси в разные и не мучайся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2002, 11:34 |
|
||
|
StoredProc
|
|||
|---|---|---|---|
|
#18+
>hDrummer Они у меня не вместе отрабатывают.... Все зависит от условия. Разнести по разным, дело не хитрое... только вот интересно узнать откуда эти "ноги растут" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2002, 12:44 |
|
||
|
StoredProc
|
|||
|---|---|---|---|
|
#18+
Да там и транзакция то не нужна. А судя по ошибке и процедуре - у тебя при удалении не задаются все остальные параметры. Вот и ругается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2002, 13:00 |
|
||
|
StoredProc
|
|||
|---|---|---|---|
|
#18+
>tygra А что надо всегда ВСЕ параметры указывать? Даже если при удалении, я использую два параметра? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2002, 14:40 |
|
||
|
StoredProc
|
|||
|---|---|---|---|
|
#18+
единственно можно default'ы поставить, тогда можно не все указывать. Из BOL'a: CREATE PROCEDURE get_sales_for_title @title varchar(80) = NULL, -- NULL default value @ytd_sales int OUTPUT AS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2002, 15:02 |
|
||
|
StoredProc
|
|||
|---|---|---|---|
|
#18+
Так вот для этого и нужны (по уму то) две разных процедуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2002, 15:02 |
|
||
|
StoredProc
|
|||
|---|---|---|---|
|
#18+
и вот дальше: The following example shows the my_proc procedure with default values for each of the three parameters @first, @second, and @third, and the values displayed when the stored procedure is executed with other parameter values: CREATE PROCEDURE my_proc @first int = NULL, -- NULL default value @second int = 2, -- Default value of 2 @third int = 3 -- Default value of 3 AS -- Display values. SELECT @first, @second, @third GO EXECUTE my_proc -- No parameters supplied GO Displays: NULL 2 3 EXECUTE my_proc 10, 20, 30 -- All parameters supplied GO Displays: 10 20 30 EXECUTE my_proc @second = 500 -- Only second parameter supplied by name GO Displays: NULL 500 3 EXECUTE my_proc 40, @third = 50 -- Only first and third parameters GO -- are supplied. Displays: 40 2 50 А вообще смотри stored procedures--> parameters ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2002, 15:04 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=32068867&tid=2119638]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
67ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
| others: | 271ms |
| total: | 433ms |

| 0 / 0 |
