簡體   English   中英

SqlDataAdapter - 結合存儲過程和帶參數的Select語句

[英]SqlDataAdapter - combine stored procedure and Select statement with parameters

使用SqlDataAdapter (或其他 ASP.NET 技術),是否可以對存儲過程進行單個 SQL 調用並運行選擇語句? 兩者都有參數。

我知道你可以組合多個選擇語句......

DataSet ds = new DataSet();

using (SqlConnection connection = new SqlConnection(myConnectionString))
{
    connection.Open();

    SqlDataAdapter cmd = new SqlDataAdapter("SELECT id FROM Table1 WHERE id=@myid; SELECT id FROM Table2", connection);
    cmd.SelectCommand.Parameters.AddWithValue("@id",myid);
    cmd.Fill(ds);
}

您可以以類似的方式調用存儲過程...

DataSet ds = new DataSet();

using (SqlConnection connection = new SqlConnection(myConnectionString))
{
    connection.Open();
    SqlDataAdapter cmd = new SqlDataAdapter("myStoredProcedure", connection);
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.SelectCommand.Parameters.AddWithValue("@id",myid);
    cmd.Fill(ds);
}

但我想將兩者合並為一個電話。

我需要將存儲過程和選擇語句分開。 我不想將它們組合成一個存儲過程。

謝謝你的幫助!

訣竅是exec函數。

從文檔

它在 Transact-SQL 批處理或以下模塊之一中執行命令字符串或字符串:系統存儲過程、用戶定義存儲過程、CLR 存儲過程、標量值用戶定義函數或擴展存儲過程。

所以你可以這樣做:

DataSet ds = new DataSet();
using (SqlConnection connection = new SqlConnection(myConnectionString))
{
    connection.Open();
    SqlDataAdapter cmd = new SqlDataAdapter("SELECT id FROM Table1 WHERE id=@myid; Exec myStoredProcedure @myid", connection);
    cmd.SelectCommand.Parameters.AddWithValue("@myid",myid);
    cmd.Fill(ds);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM