|
WPF + MSSQL получить значение выходного параметра.
|
|||
---|---|---|---|
#18+
Добрый вечер! Имеется база данных на MSSQL, в которой создана хранимая процедура. Чтобы не занимать лишнее место, прикладывать её всю не будут. Она имеет выходной параметр. Я уже напряму в процедуре указал значние Код: sql 1. 2. 3. 4.
При выполнении процедуры в SQL Management Studio, результат возвращается в виде значения - 3. Код на C#: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41.
Пробовал вызывать и методом myCommand.ExecuteNonQuery(). В результате возвращается значение = 8. Хотя в процедуре явно задано = 3. Что делаю не так? Подскажите пожалуйста. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2020, 01:16 |
|
WPF + MSSQL получить значение выходного параметра.
|
|||
---|---|---|---|
#18+
>Евгений Стронг, сегодня, 01:16 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1321369&msg=22062753][22062753] >… Пробовал вызывать и методом … < Использую reader, как то так (извините, использую листинг работающей схемы, разберетесь, лишнее выбросите): public static async Task Entity_SPx(string spname, dlg_sp sp, dlg_RowToEntity RowToEntity) { wsp_Ошибка = null; try { using (SqlConnection connection = new SqlConnection(str_Соединение)) { await connection.OpenAsync(); SqlCommand command = new SqlCommand("", connection); command.Parameters.Clear(); command.Parameters.AddRange(asp); command.CommandText = spname; command.CommandType = CommandType.StoredProcedure; //-- Формируем коллекцию из выборки using (reader = await command.ExecuteReaderAsync()) { while ( await reader.ReadAsync()) ... } } } catch (Exception ex) { wsp_Ошибка = ex.Message; } } ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2020, 02:25 |
|
WPF + MSSQL получить значение выходного параметра.
|
|||
---|---|---|---|
#18+
Евгений Стронг Что делаю не так? Евгений Стронг Код: c# 1. 2. 3.
и SELECT @id не нужен в процедуре, если вы собираетесь читать значение через параметр ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2020, 09:07 |
|
WPF + MSSQL получить значение выходного параметра.
|
|||
---|---|---|---|
#18+
select @id; это скалярный тип запроса лично я не ценитель output параметров в запросах есть ли смысл явно вызывать Close(), в конструкции using будет вызов Dispose, где произойдет закрытие соединения, кто как думает? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2020, 11:44 |
|
WPF + MSSQL получить значение выходного параметра.
|
|||
---|---|---|---|
#18+
Roman Mejtes select @id; это скалярный тип запроса Тем не менее, в таком случае процедура вернёт вполне нескалярную выборку. Roman Mejtes лично я не ценитель output параметров в запросах Их в запросах и нет, это фича исключительно процедурных расширений SQL. Roman Mejtes есть ли смысл явно вызывать Close(), в конструкции using будет вызов Dispose, где произойдет закрытие соединения, кто как думает? :) Я не вызываю. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2020, 12:08 |
|
WPF + MSSQL получить значение выходного параметра.
|
|||
---|---|---|---|
#18+
Shocker.Pro Евгений Стронг Что делаю не так? Евгений Стронг Код: c# 1. 2. 3.
Можно немного подробнее? Не вижу проблему у себя. и SELECT @id не нужен в процедуре, если вы собираетесь читать значение через параметр А как тогда получить результат? Если выполнять без select, то студия возвращает просто сообщение - затронуто столько то строк, например. А мне же нужно именно значение. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2020, 18:17 |
|
WPF + MSSQL получить значение выходного параметра.
|
|||
---|---|---|---|
#18+
Евгений Стронг А как тогда получить результат? Если выполнять без select, то студия возвращает просто сообщение - затронуто столько то строк, например. А мне же нужно именно значение. А причем тут студия, вам же не в студию результат нужно, а в ADO Определитесь, каким образом вы хотите получить результат 1) можно через SELECT (вернется набор записей, в частном случае одна запись с одним полем) 2) можно через RETURN (вернется int) 3) можно через @Param OUTPUT А сейчас вы непонятно что с непонятно чем пытаетесь скрестить ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2020, 18:55 |
|
WPF + MSSQL получить значение выходного параметра.
|
|||
---|---|---|---|
#18+
Shocker.Pro Евгений Стронг А как тогда получить результат? Если выполнять без select, то студия возвращает просто сообщение - затронуто столько то строк, например. А мне же нужно именно значение. А причем тут студия, вам же не в студию результат нужно, а в ADO Определитесь, каким образом вы хотите получить результат 1) можно через SELECT (вернется набор записей, в частном случае одна запись с одним полем) 2) можно через RETURN (вернется int) 3) можно через @Param OUTPUT А сейчас вы непонятно что с непонятно чем пытаетесь скрестить Я максимально упростил задачу. Создал процедуру Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32.
Что тут не так сейчас? Не понятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2020, 19:01 |
|
WPF + MSSQL получить значение выходного параметра.
|
|||
---|---|---|---|
#18+
Евгений Стронг Что тут не так сейчас? Не понятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2020, 19:50 |
|
WPF + MSSQL получить значение выходного параметра.
|
|||
---|---|---|---|
#18+
метод адд возвращает объект параметра, его и надо настраивать или передать его настроенным как аргумент ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2020, 20:18 |
|
WPF + MSSQL получить значение выходного параметра.
|
|||
---|---|---|---|
#18+
Shocker.Pro Евгений Стронг Что тут не так сейчас? Не понятно. Вот так? Код: c# 1. 2. 3.
Но тоже не работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2020, 22:37 |
|
WPF + MSSQL получить значение выходного параметра.
|
|||
---|---|---|---|
#18+
Евгений, похоже, вам следует сначала подучить синтаксис C#, а потом что-то более сложное. Вы эти два примера откуда взяли? Потому что в этих трех строках два не связанных между собой действия. Это одно действие. Вы объявили переменную, но дальше она никак не используется: Евгений Стронг Код: c# 1. 2.
Это второе действие, не связанное с первым. Оно добавляет параметр к команде, но это параметр не output, потому что это нигде не указано: Евгений Стронг Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2020, 00:06 |
|
WPF + MSSQL получить значение выходного параметра.
|
|||
---|---|---|---|
#18+
Вот учебник по ADO.NET https://metanit.com/sharp/adonet/2.10.php Но, повторюсь, у вас непонимание синтаксиса C#, а не ADO.NET ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2020, 00:08 |
|
WPF + MSSQL получить значение выходного параметра.
|
|||
---|---|---|---|
#18+
Shocker.Pro Вот учебник по ADO.NET https://metanit.com/sharp/adonet/2.10.php Но, повторюсь, у вас непонимание синтаксиса C#, а не ADO.NET проблемы не в синтаксисе, но сформулировать свою мысль я не могу, так как хочу спать :) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2020, 02:42 |
|
WPF + MSSQL получить значение выходного параметра.
|
|||
---|---|---|---|
#18+
Shocker.Pro Вот учебник по ADO.NET https://metanit.com/sharp/adonet/2.10.php Но, повторюсь, у вас непонимание синтаксиса C#, а не ADO.NET Спасибо за информацию. Всё получилось. Более того, я делал предыдущий код по примеру из интернета. Видимо не компетентный попался "учитель". Перехожу с Delphi на C# (переписываю свой проект ранее созданный на Delphi + MySQL). И вот добрался до работы с компонентами SQL. Но всё-равно вспоминаю Delphi. Как там одной рукой с помощью мышки настраивал компоненты, а другой вытирал слёзы счастья. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2020, 12:28 |
|
|
start [/forum/topic.php?fid=21&msg=39916513&tid=1440297]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 149ms |
0 / 0 |