Есть хранимая процедура —
CREATE PROCEDURE sp_XXX ( @A int, @B int = 21 )
AS
DECLARE @res int
begin
Set @res = @A + @B
end
return @res
GO
В Query Analyzer все работает замечательно — выдает сумму двух чисел
Но в следующей функции я все время получаю — 0, где ошибка — никак не
найду

(
::CoInitialize(NULL);
try
{
_ConnectionPtr pConn("ADODB.Connection");
_RecordsetPtr pRs("ADODB.Recordset");
_CommandPtr pCmd("ADODB.Command");
_ParameterPtr pPr("ADODB.Parameter");
pConn->Open("dsn=uchet;", "sa", "", adConnectUnspecified);
pCmd->CommandType = adCmdStoredProc;
pCmd->CommandText = "sp_XXX";
int A = 9, B = 19, res = 0;
VARIANT vt;
memset(C, 0, 32);
vt.vt = VT_I2;
// Output
pPr = pCmd->CreateParameter("ret", adInteger, adParamReturnValue, 4);
pCmd->Parameters->Append(pPr);
vt.iVal = A;
pPr = pCmd->CreateParameter("A", adInteger, adParamInput, sizeof(int), vt);
pCmd->Parameters->Append(pPr);
pPr->Value = vt;
vt.iVal = B;
pPr = pCmd->CreateParameter("B", adInteger, adParamInput, sizeof(int), vt);
pCmd->Parameters->Append(pPr);
pPr->Value = vt;
pCmd->ActiveConnection = pConn;
pRs = pCmd->Execute(NULL,NULL,adCmdStoredProc);
vt.iVal = (short)0;
pPr = pCmd->Parameters->GetItem(&vt);
if (pPr)
{
if ( (SHORT)pPr->Value > 0)
{
TRACE("Parameter name = '%s', value = '%d'\n", (LPCSTR)pPr->Name, (SHORT)pPr->Value);
}
else
{
int c = pConn->Errors->Count - 1;
if (c > 0)
{
VARIANT i;
i.vt = VT_I2; i.iVal = 0;
for (i.iVal = 0; i.iVal < c; i.iVal++ )
{
TRACE("ERROR: - %s\n", pConn->Errors->GetItem(i)->GetDescription());
}
}
}
}
}
catch (_com_error &e)
{
dump_com_error(e);
}
CoUninitialize();
02.05.04 00:19: Перенесено модератором из 'C/C++' — ПК