|
|
|
|
|
|
|
новичок
      
участник
Last Login: 28.11.2006 11:20
Сообщ.: 1,
Visits: 8
|
|
у меня проблема: Обращаюсь к SQL Server Express через ODBC API. Хочу получить данные из хранимой процедуры, причем параметры объявлены, как output. Без них все возвращается просто супер. Также не возвращается результат процедуры, постоянно получаю только 0;
Вот процедура:
//////////////////////////////////////////////////////////////////////////
CREATE PROCEDURE [dbo].[MyProc2]
@counterID int,
@name varchar(100) output
AS
if @counterID<>0
select @name = name from scales where counterID=@counterID
else
select * from scales where counterID=2
return 999
////////////////////////////////////////////////////////////////////////////////////
вот код проги на с++:
char cmd[] = "{? = call MyProc2 ( 0,?)}";
long res[2];
char name[100];
int counterID=1;
SQLBindParameter(hStmt, 1, SQL_PARAM_OUTPUT, SQL_C_LONG,
SQL_INTEGER, 0, 0, ¶m1, 0, &res[0]);
SQLBindParameter(hStmt, 2, SQL_PARAM_OUTPUT, SQL_C_CHAR,
SQL_CHAR, sizeof(name), 0, name, 0,&res[1]);
RETCODE result_code = SQLExecDirect(hStmt,(unsigned char*)cmd,strlen(cmd));
if(SQL_SUCCESS==result_code || SQL_SUCCESS_WITH_INFO==result_code)
{
while ( ( retcode = SQLMoreResults(hStmt) ) != SQL_NO_DATA )
{
printf(name);
}
}
/////////////////////////////////////////////////////////////////
Если передавать 1 или другое число, кроме 0, то ничего не возвращается, если же 0, то все нормально.
Помогите, если кто-нибудь имел такие проблемы, я тут горю работа стоит, начальство напрягает. Перечитал MSDN, на Microsoft-е все перерыл. Везде написано, что все должно работать....... :(
|
|
|
|
|
Supreme Being
      
участник
Last Login: 27.03.2008 15:26
Сообщ.: 701,
Visits: 7 028
|
|
char cmd[] = "{? = call MyProc2 ( 0,?)}";
Как-то непонятненько.... Может всё-таки лучше char cmd[] = "{? declare @text as varchar(100) exec MyProc2 0, @text out select @text }";
|
|
|
|