내가 뭘 하려는지 : 여러 테이블에서 단일 열을 반환하는 T-SQL 저장 프로 시저를 만들었습니다. tsql 프로 시저 반환 값 asp.net
CREATE PROCEDURE [dbo].[Search_]
(@am VARCHAR(12))
AS
BEGIN
SET NOCOUNT ON;
DECLARE @DBName VARCHAR(128)
DECLARE Tbl CURSOR READ_ONLY FOR
SELECT LEFT(TABLE_NAME, 27) AS Tbl
FROM ap.INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE LEFT('STORED_PRODUCTS_FR_[0-9]_%', 27)
AND SUBSTRING(TABLE_NAME, 20, 2) LIKE '%[0-9]%'
AND SUBSTRING(TABLE_NAME, 23, 1) = '_'
ORDER BY
CONVERT(INT, SUBSTRING(TABLE_NAME, 24, 4)) ASC,
CONVERT(INT, SUBSTRING(TABLE_NAME, 21, 2)) ASC
OPEN Tbl
FETCH NEXT FROM Tbl INTO @DBName
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @SQL VARCHAR(100)
SET @sql = 'SELECT [column 3] FROM ' + @DBName + ' WHERE [COLUMN 4] = ' + @am + '';
EXEC(@sql)
FETCH NEXT FROM Tbl INTO @DBName
END
END
CLOSE Tbl
DEALLOCATE Tbl
그런 다음 asp.net에서, 난 단지 저장 프로 시저의 단일 행 (첫 번째)을 반환
try
{
SqlDataAdapter dt = new SqlDataAdapter();
string message = string.Empty;
con.Open();
cmd.CommandText = "Search_";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@am", am.Text);
cmd.Connection = con;
dt.SelectCommand = cmd;
DataTable dTable = new DataTable();
dt.Fill(dTable);
GridView1.DataSource = dTable;
GridView1.DataBind();
}
catch (Exception ex)
{
throw ex;
}
...있는 gridview를 채울합니다.
내가 뭘 잘못하고 있니? 값이 스스로 덮어 쓰는 것 같습니다.
누구로부터 어떤 도움
....
SP는 원하는대로 SQL Server에서 작동합니까? –
예. 예상대로 2 개의 행을 반환합니다. – Nick
SQL 관리 스튜디오에서 저장 프로 시저를 실행하십시오. 데이터가 어떻게 반환되는지보십시오. 두 행을 가진 하나의 테이블이 아닌 두 테이블이 있습니다 –