私がやろうとしていること:複数のテーブルから単一の列を返す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で、Iは、GridViewコントロールを移入したい...
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;
}
のみ、ストアドプロシージャの単一の行(最初のもの)を返します。
私は間違っていますか?値が上書きされているようです。
誰から任意の助け....
SPは必要に応じてSQL Serverで動作しますか? –
はい。期待どおりに2行を返します。 – Nick
SQL管理スタジオでストアドプロシージャを実行し、そこにデータが返される方法を参照してください。あなたは2つの行を持つ1つのテーブルを持たない2つのテーブルを持っている可能性があります –