Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Проблема с обработкой output параметра на клиенте
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток!!! Если у кто-то сможет помочь в решении проблемы буду очень благодарен. Суть в следующем. Создаю я следующую сохраненную процедуру: CREATE PROCEDURE AddTheme2 @ThemeName varchar(40), @ParentTheme numeric = null, @result int output AS BEGIN -- Insert values into our table INSERT INTO Theme(Name,ID_Parent) VALUES (@ThemeName,@ParentTheme) -- and return ID of created row select @result = @@identity return @@identity END При запуске процедуры в SQL Advantage проблем никаких не возникает. Но когда я пробую вызывать процедуру из своего клиента написанного на C#, значение выходного параметра @result всегда остается null, причем и вставка в базу и возвращение параметра RETURN_VALUE проходят нормально. Никто не подскажет в чем прикол с @result? P.S. Вообще я раньше писал на Delphi+Oracle, а вот сейчас пробую на C#+Sybase. Я попробовал ту же самую процедуру вызывать с клиента написанного на родном Дельфи эффект тот же самый. Я использую ASE 12.5 Server, в качестве OLE DB Provider'а - Sybase.ASEOLEDBProvider.2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2005, 04:29 |
|
||
|
Проблема с обработкой output параметра на клиенте
|
|||
|---|---|---|---|
|
#18+
тынць _________________ "Helo, word!" - 17 errors 56 warnings ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2005, 09:00 |
|
||
|
Проблема с обработкой output параметра на клиенте
|
|||
|---|---|---|---|
|
#18+
Во-первых, это не совсем правильная процедура с точки зрения ASE. Код возврата процедуры не должен содержать в себе предметно-ориентированное значение, а должен быть 0 если процедура выполнена успешно. > 0 , если процедура выполнена с ошибкой. При этом еще надо добавить, что @@identity всегда numeric, а код возврата - int, поэтому @@identity может просто в int не влезть. Но это все не критично, так тоже может работать. Думаю, проблема в том, что на клиентской стороне ты не объявил параметр как выходной. Это тоже нужно делать . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2005, 11:27 |
|
||
|
Проблема с обработкой output параметра на клиенте
|
|||
|---|---|---|---|
|
#18+
to ExSoft: Как раз ретурн значение я получаю нормально. to MasterZiv: На клиентской стороне тоже вроде все делаю правильно. Изначально я проставлял output direction для многострадального параметра @result. Потом от безнадеги пробовал и ReturnValue и inputoutput. Код возврата процедуры использовался для того чтобы посмотреть, а вообще он с @@identity работать умеет? Кстати если я правильно понял документацию, код возврата должен быть <0 если процедура выполнена с ошибкой и Sybase под это дело забил коды с -1 до -99... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2005, 14:24 |
|
||
|
Проблема с обработкой output параметра на клиенте
|
|||
|---|---|---|---|
|
#18+
2auz 1) Для C# лучше юзать родной .NET provider. 2) Забейте на то что возвращает return. Лучше ошибки обрабатывайте. 3) Какая у версия Sybase? Поищите последний EBF для вашей версии 4) При работе с identity не забывайте про identity_gap 2MasterZiv 12.5.3 понимает identity любых целых типов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2005, 17:36 |
|
||
|
Проблема с обработкой output параметра на клиенте
|
|||
|---|---|---|---|
|
#18+
А что возвращает OleDbCommandBuilder.DeriveParameters() Код: plaintext 1. 2. 3. 4. 5. 6. 7. BTW, попытайтесь полученную info и заюзать: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. P.S. У мну была аналогичная ситуация: на одной маше все передавалось-возвращалось, на другой - нЭт Ж8-/ Проблема исчезла после пере'install'а клиента... _________________ "Helo, word!" - 17 errors 56 warnings ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2005, 14:58 |
|
||
|
Проблема с обработкой output параметра на клиенте
|
|||
|---|---|---|---|
|
#18+
auz в качестве OLE DB Provider'а - Sybase.ASEOLEDBProvider.2 а че 2 , а не просто Sybase.ASEOLEDBProvider ? хотя... у меня и под Sybase.ASEOLEDBProvider , и под Sybase.ASEOLEDBProvider.2 с дрозофилой все нормально... _________________ "Helo, word!" - 17 errors 56 warnings ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2005, 15:22 |
|
||
|
Проблема с обработкой output параметра на клиенте
|
|||
|---|---|---|---|
|
#18+
auzКстати если я правильно понял документацию, код возврата должен быть <0 если процедура выполнена с ошибкой и Sybase под это дело забил коды с -1 до -99... Нет. Он должен быть 0, если ошибки нет, отрицательные коды возврата - это системные ошибки, ASE их резервирует за собой. Положительные - пользовательские, т.е. для программистов процедур. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2005, 09:24 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=33252949&tid=2013409]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 368ms |

| 0 / 0 |
