Stored Procedure не возвращает набор записей?
CREATE PROCEDURE sp_is_datareader @name_in_db varchar(100)
AS
EXEC sp_helpuser @name_in_db
Она возвращает поля UserName, GroupName, LoginName, DefDBName, UserID, SuserID.
Меня интересует только поле “GroupName”, в котром можно узнать роль пользователя на уровне БД.
Проверку пользователя из Builder 5 провожу так
void __fastcall TForm1Button1Click(TObject *Sender)
{
ADOConnection1->Open();
if (ADOStoredProc1->Connection)
{
ADOStoredProc1->ProcedureName = "sp_is_datareader";
ADOStoredProc1->Parameters->Clear();
TParameter *NewPar;
NewPar = ADOStoredProc1->Parameters->AddParameter();
NewPar->DataType = ftString;
NewPar->Direction = pdInput;
NewPar->Name = "@name_in_db";
ADOStoredProc1->Parameters->ParamValues["@name_in_db"] = "Иванов";
ADOStoredProc1->ExecProc();
while (!ADOStoredProc1->Eof)
{
if (ADOStoredProc1->FieldByName("GroupName")->AsString == "db_datareader")
ShowMessage("Вы datareader");
ADOStoredProc1->Next();
}
}
}
ADOStoredProc1 записей не возвращает, хотя в Query Analiser проверял строкой «EXEC sp_is_datareader Иванов» - все работает.
Подскажите, пожалуйста, что я делаю не так.
необходимо
ADOStoredProc->Open();
ADOStoredProc->Close();
если процедура никаких записей не возвращает
то ADOStoredProc->ExecProc();