程序或函数'期望参数'@pro_ID',该参数未提供

本文关键字:参数 ID 期望 程序 @pro 函数 | 更新日期: 2023-09-27 18:17:11

我正在使用期望@pro_ID参数值的存储过程:

ALTER PROCEDURE [dbo].[SpMyIndex]
    @pro_ID int
AS
    SELECT CAST(MAX(SUBSTRING(thumbpic_path, 18, 1)) AS INT)+1 AS HAHA
    FROM [dbo].[TblPro_Gallery] WHERE pro_ID = @pro_ID

在我的代码中,我有一个下拉列表(drpProduct),必须将@pro_ID传递到SqlDataSource:

<asp:SqlDataSource ID="sdsMyIndex" runat="server" 
    ConnectionString="<%$ ConnectionStrings:DigiStudio_CString %>" 
    SelectCommand = "[SpMyIndex]" SelectCommandType= "StoredProcedure">
    <SelectParameters>
        <asp:ControlParameter ControlID="drpProduct" Name="pro_ID" 
            PropertyName="SelectedValue" Type="Int32" />
    </SelectParameters>
</asp:SqlDataSource>
这是我的c#代码:
private void MakeIndex()
{
             SqlConnection con = new SqlConnection(cn);
             SqlCommand cmd = new SqlCommand();
             cmd = con.CreateCommand();
             cmd.CommandType = CommandType.StoredProcedure;
             cmd.CommandText = "[SpMyIndex]";
             con.Open();
             SqlDataReader dbDR = cmd.ExecuteReader();
             while (dbDR.Read())
             {
                 Session["MyIndex"] = dbDR["HAHA"].ToString();
             }
             con.Close();
     }

为什么不能访问@pro_ID的存储过程值

程序或函数'期望参数'@pro_ID',该参数未提供

由于您正在使用asp:SqlDataSource,您不需要编写您在MakeIndex方法中编写的代码。如果您正在使用MakeIndex方法的路由,那么您必须添加@pro_ID作为命令参数。我认为你把这些方法混在一起了。