powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Получить return(RetValue) из SP
8 сообщений из 8, страница 1 из 1
Получить return(RetValue) из SP
    #32891466
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вроде делаю все как в букваре написано
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
cmd.CommandType=CommandType.StoredProcedure;
cmd.CommandText="sp_Name";
...
OleDbParameter
  Ret=cmd.Parameters.Add("@return",OleDbType.Integer);

Ret.Direction=ParameterDirection.ReturnValue;
cmd.ExecuteNonQuery();

// Ret.Value==DBNull - и хоть ты тресни Ж8-/

Кто виноватЪ? Что делатЪ?
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
Получить return(RetValue) из SP
    #32891691
Фотография hDrummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что за СУБД и текст ХП можно узнать?
...
Рейтинг: 0 / 0
Получить return(RetValue) из SP
    #32892800
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
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.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
create procedure sp_PhoneSave
  @PHONE_ID D_PHONE,
  @CITY_ID D_CITY,
  @PHONE_TYPE_ID D_CLIENT_PARAM,
  @CLIENT_ID D_CLIENT,
  @PHONE_NUMBER Varchar( 15 ),
  @RECORD_STATE D_RECORD_STATE,
  @USER_ID D_CLIENT_RELATION,
  @RECORD_MODIFY D_RECORD_MODIFY_TIMESTAMP output,
  @NEW_PHONE_ID D_PHONE output
as
  declare
    @OldPhoneId D_PHONE,
    @RSNew D_RECORD_STATE,
    @RSActive D_RECORD_STATE,
    @RSArchive D_RECORD_STATE,
    @RetValue smallint

  select @RSNew= 50 
  select @RSActive= 100 
  select @RSArchive= 150 

  select @OldPhoneId=PHONE_ID
  from PHONE
  where PHONE_ID=@PHONE_ID

  if @OldPhoneId is not null
    begin
      update PHONE set
        RECORD_STATE=@RSArchive,
        USER_ID=@USER_ID,
        RECORD_MODIFY=getdate()
    end

  select @RECORD_MODIFY=getdate()

  insert into PHONE
  (CITY_ID, PHONE_TYPE_ID, CLIENT_ID, PHONE_NUMBER, RECORD_STATE, USER_ID, RECORD_MODIFY)
  values
  (@CITY_ID, @PHONE_TYPE_ID, @CLIENT_ID, @PHONE_NUMBER, @RECORD_STATE, @USER_ID, @RECORD_MODIFY)

  if @@rowcount!= 1 
    begin
      select @NEW_PHONE_ID= 0 
      select @RetValue=- 100 
    end
  else
    begin
      select @NEW_PHONE_ID=@@identity
      select @RetValue= 0 
    end

  return(@RetValue)

Sybase ASE 12.5
Из-под SQL Advantage - все oB!

_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
Получить return(RetValue) из SP
    #32893248
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
наваял для простоты дрозофилу
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
create procedure mulmul @mult1 int, @mult2 int,  
  @result int output  
as  
declare @RetVal int 
select @result = @mult1 * @mult2 
select @RetVal=@result 
return(@RetVal)

результат - тот же

Sybase ASE 12.5
Из-под SQL Advantage - все oB!
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
Получить return(RetValue) из SP
    #32893341
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуй тип возвращаемого значения - SqlDbType.Int
...
Рейтинг: 0 / 0
Получить return(RetValue) из SP
    #32898546
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
шо мертвому припарки Ж8-/

P.S. шо прЫкольно: SqlDbType.Int прохавал ;)
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
Получить return(RetValue) из SP
    #32908980
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
заборол таким макаром:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
cmd.CommandText="exec ? = sp_Name";
...
OleDbParameter
  Ret=cmd.Parameters.Add("@return",OleDbType.Integer);

Ret.Direction=ParameterDirection.ReturnValue;
cmd.ExecuteNonQuery();

выходит не стоит юзать CommandType=CommandType.StoredProcedure;
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
Получить return(RetValue) из SP
    #32912651
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сорри за дезинформацию :( Ж8-/

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
cmd.CommandText="exec ? = sp_Name";
...
OleDbParameter
  Ret=cmd.Parameters.Add("@return",OleDbType.Integer);

Ret.Direction=ParameterDirection.ReturnValue;
cmd.ExecuteNonQuery();

на другой маше с другими версиями сервака, клиента, провайдера (толком из-за чего не разбирался) не прокатило Ж8-/

но вот, вроде, уже окончательный вариант

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
create procedure mulmul
  @mult1 int,
  @mult2 int,
  @result int output
as
  declare
    @RetVal int

  select @result=@mult1 * @mult2
  select @RetVal=@result

  return(@RetVal)

Код: plaintext
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.
#if USE_COMMAND_TYPE_STORED_PROCEDURE
  cmd.CommandType=CommandType.StoredProcedure;
  cmd.CommandText="mulmul";
#else
  cmd.CommandType=CommandType.Text;
  cmd.CommandText="{? = call mulmul(?, ?, ?)}";
#endif

OleDbParameter
  SPRetValue=cmd.Parameters.Add("@return",SqlDbType.Int);

SPRetValue.Direction=ParameterDirection.ReturnValue;
cmd.Parameters.Add("@mult1",OleDbType.Integer).Value= 5 ;
cmd.Parameters.Add("@mult2",OleDbType.Integer).Value= 5 ;

OleDbParameter
  SPResult=cmd.Parameters.Add("@result",OleDbType.Integer);

SPResult.Direction=ParameterDirection.Output;

cmd.ExecuteNonQuery();
                                
int
  Result=Convert.ToInt32(SPResult.Value),
  RetValue=Convert.ToInt32(SPRetValue.Value);

if(Result==RetValue)
  {
     Console.WriteLine("oB!");
  }
else
  {
     Console.WriteLine("Tampax");
  }

Вся фишка, оказалась в том, что при использовании cmd.CommandType=CommandType.StoredProcedure
return-значение надо ставить ПЕРВЫМ в списке параметров!!! Ж8-/

_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Получить return(RetValue) из SP
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]