編寫和使用預存程序
唯讀 帶參數的查詢
唯讀
以下程式碼範例建立一個只返回表的預存程序。
CREATE Procedure GetAuthors AS
SELECT * FROM Authors
return
GO
protected void Page_Load(Object Src, EventArgs E) { SqlDataAdapter da = new SqlDataAdapter("Ten Most Expensive Products", conn); da.SelectCommand.CommandType = CommandType.StoredProcedure; //設定預存程序 DataSet ds = new DataSet(); da.Fill(ds, "產品"); dg.DataSource=ds.Tables["產品"].DefaultView; dg.DataBind(); }
將預存程序的參數作為特殊查詢傳遞,如下面的樣本所示。
可以建立同樣接受參數的預存程序。例如:
CREATE Procedure LoadPersonalizationSettings (@UserId varchar(50)) AS
SELECT * FROM Personalization WHERE UserID=@UserId
return
GO
public void GetEmployees_Click(Object sender, EventArgs E)
{
SqlDataAdapter da = new SqlDataAdapter("SalesByCategory", conn);
da.SelectCommand.CommandType = CommandType.StoredProcedure; //設定預存程序
da.SelectCommand.Parameters.Add(new SqlParameter("@CategoryName", SqlDbType.NVarChar, 15));
da.SelectCommand.Parameters["@CategoryName"].Value = SelectCategory.Value;
da.SelectCommand.Parameters.Add(new SqlParameter("@OrdYear", SqlDbType.NVarChar, 4));
da.SelectCommand.Parameters["@OrdYear"].Value = SelectYear.Value;
DataSet ds = new DataSet();
da.Fill(ds, "銷售額");
MyDataGrid.DataSource=ds.Tables["銷售額"].DefaultView; MyDataGrid.DataBind();
}