powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Банально вернуть output параметры SP через ADO
2 сообщений из 2, страница 1 из 1
Банально вернуть output параметры SP через ADO
    #34330775
dobrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую всех программистов. Работаю с MSSQL2005.
Вот уже 3 дня как мучаюсь с простейшим вопросом: как вернуть значения выходных параметров хранимой процедуры через ADO. Пробовал на 3 языках (С#, C++, VB) и не получилось.
Вот скриптик простейшей процедурки:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
CREATE PROCEDURE [dbo].[xp_Operation]
@id_Operation int =  0  output
AS
BEGIN
  set @id_Operation =  100 
  SELECT  12345  as Nomerik,  1214112  as Numbik
  RETURN  0 
END
Вот пример кода на шарпе обращающегося к процедуре:
Код: 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.
using System;
using System.Collections.Generic;
using System.Text;
using ADODB;
using System.Windows.Forms;

namespace AdoConnect
{
  class Ado
  {
   public void InitAdoConnection()
    {
      ADODB.Command AdoCmd = new ADODB.Command();
      ADODB.Connection AdoConn = new ADODB.Connection();
      string strCnxn = "Provider=SQLOLEDB.1;Persist Security Info=False;Data Source=xxx;Integrated Security=SSPI;Initial Catalog=yyy";
      AdoConn.Open(strCnxn, null, null,  0 );
      AdoCmd.ActiveConnection = AdoConn;
      AdoCmd.CommandText = "xp_Operation";
      AdoCmd.CommandType = ADODB.CommandTypeEnum.adCmdStoredProc;
      AdoCmd.Parameters.Refresh();
      object AccRef;
      object[] Param = { null };
      object paramStub = Param;
      Recordset RC = AdoCmd.Execute(out AccRef, ref paramStub,  0 ); // (out AccRef, ref AdoCmd,  0 );
      MessageBox.Show(AdoCmd.Parameters["@id_Operation"].Value.ToString());
     }
  }
}
Подскажите пожалуйста что не так ? Как получить значение 100 параметра процедуры на выходе?
Заранее благодарю всех.
...
Рейтинг: 0 / 0
Банально вернуть output параметры SP через ADO
    #34330932
dobrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо. Немного полазив по MSDN удалось разобраться в чем проблема. Оказалось что из процедуры данные возвращаются потоком (сразу рекордсет, а потом последовательно выходные параметры). В итоге оказалось достаточно закрыть рекордсет и получаем нужный результат:
Код: 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.
using System;
using System.Collections.Generic;
using System.Text;
using ADODB;
using System.Windows.Forms;

namespace AdoConnect
{
  class Ado
  {
   public void InitAdoConnection()
    {
      ADODB.Command AdoCmd = new ADODB.Command();
      ADODB.Connection AdoConn = new ADODB.Connection();
      string strCnxn = "Provider=SQLOLEDB.1;Persist Security Info=False;Data Source=xxx;Integrated Security=SSPI;Initial Catalog=yyy";
      AdoConn.Open(strCnxn, null, null,  0 );
      AdoCmd.ActiveConnection = AdoConn;
      AdoCmd.CommandText = "xp_Operation";
      AdoCmd.CommandType = ADODB.CommandTypeEnum.adCmdStoredProc;
      AdoCmd.Parameters.Refresh();
      object AccRef;
      object[] Param = { null };
      object paramStub = Param;
      Recordset RC = AdoCmd.Execute(out AccRef, ref paramStub,  0 ); // (out AccRef, ref AdoCmd,  0 );
      RC.close();
      MessageBox.Show(AdoCmd.Parameters["@id_Operation"].Value.ToString());
     }
  }
}
Единственное что осталось для полного счастья это сделать копию рекордсета перед закрытием. Всем удачи ;)
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Банально вернуть output параметры SP через ADO
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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