2013-10-23 37 views
1

我有一個用戶定義的表和存儲過程:數據表和表值參數返回沒有行

CREATE TYPE [dbo].[int_list_tbltype] AS TABLE(
[ID] INT NULL 
) 
GO 

CREATE PROCEDURE [dbo].[GetList] 

@Status dbo.int_list_tbltype READONLY 

SELECT v.Status, v.Item 
FROM myView v 
INNER JOIN @Status tvp ON v.Status = tvp.ID 

和C#代碼:

 DataTable dt = new DataTable(); 
     SqlDataAdapter sqlAdtp = new SqlDataAdapter();    
     SqlConnection conn = new SqlConnection(ConnString); 
     SqlCommand cmd = new SqlCommand("GetList", conn); 

     //Create a table just for testing 
     DataTable _dt = new DataTable(); 
     _dt.Columns.Add("ID", typeof(int)); 
     _dt.Rows.Add(1); 
     _dt.Rows.Add(2); 

     SqlParameter param = new SqlParameter(); 
     param.ParameterName = "@Status"; 
     param.SqlDbType = System.Data.SqlDbType.Structured; 
     param.Value = _dt; 
     param.TypeName = "dbo.int_list_tbltype"; 
     cmd.Parameters.Add(param); 

     sqlAdtp.SelectCommand = cmd; 
     sqlAdtp.Fill(dt); 

我已經在一個單獨的測試的SQL查詢窗口向TVP添加值,並按照預期返回幾百行。
但是,當我嘗試將參數傳遞給存儲過程時,我收回了一個空的數據表。

任何人都可以看到它失敗的地方嗎?

謝謝!

+0

@Keith'param.Value = _dt;' –

回答

1

當然,花時間發佈一個問題,答案就會彈出給我。

我忘了這一個簡單的線:

cmd.CommandType = CommandType.StoredProcedure;