Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Получить return(RetValue) из SP / 8 сообщений из 8, страница 1 из 1
31.01.2005, 02:02
    #32891466
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить return(RetValue) из SP
Вроде делаю все как в букваре написано
Код: 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
31.01.2005, 10:04
    #32891691
hDrummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить return(RetValue) из SP
А что за СУБД и текст ХП можно узнать?
...
Рейтинг: 0 / 0
31.01.2005, 16:12
    #32892800
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить return(RetValue) из SP
Код: 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
31.01.2005, 18:27
    #32893248
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить return(RetValue) из SP
наваял для простоты дрозофилу
Код: 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
31.01.2005, 19:23
    #32893341
Alexey Sh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить return(RetValue) из SP
попробуй тип возвращаемого значения - SqlDbType.Int
...
Рейтинг: 0 / 0
03.02.2005, 10:32
    #32898546
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить return(RetValue) из SP
шо мертвому припарки Ж8-/

P.S. шо прЫкольно: SqlDbType.Int прохавал ;)
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
09.02.2005, 19:08
    #32908980
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить return(RetValue) из SP
заборол таким макаром:
Код: 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
11.02.2005, 23:33
    #32912651
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить return(RetValue) из SP
Сорри за дезинформацию :( Ж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
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Получить return(RetValue) из SP / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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