테이블을 나열하고 싶습니다. sp_msforeachtable.i가있는 데이터베이스에서 SSMS로 작성했는데 (sp_list2 저장 프로 시저에서 작성했습니다), C#에서이 저장 프로 시저를 사용하려면 그냥 목록 상자에 데이터베이스의 첫 번째 테이블을 반환합니다!Sp_msforeachtable은 C#에서 첫 번째 테이블을 반환합니다.
C#에서 코드 :
SqlCommand cmd = cnn.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_list2";
SqlParameter inparam = cmd.Parameters.Add("@dbname", SqlDbType.NVarChar);
inparam.Direction = ParameterDirection.Input;
inparam.Value = "DB";
SqlDataReader rdr = cmd.ExecuteReader();
dap.SelectCommand = cmd;
while (rdr.Read())
{
listBox1.Items.Add(rdr[0]);//this is tables name
}
내 저장 프로 시저 :
당신은 당신의for
루프 내에서
rdr.NextResult();
을 둘 필요가
create procedure sp_list2(@dbname nvarchar(max))
as
declare @query as nvarchar(max)
--declare @dbname as nvarchar(max)
SET @query=''
SET @query [email protected] + @dbname + '..sp_msforeachtable '' select ''''?'''' as ''''Table'''', count(*) as ''''Rows'''' from ? '''
EXEC sp_executesql @query
저장 프로 시저의 모양은 어떻습니까? – adrianbanks
내 질문을 편집했습니다. – Arash