如何在exec存储过程中传递参数

时间:2012-01-18 12:40:12

标签: sql stored-procedures parameters

这会奏效。

SelectCommand="SELECT [CompanyName], [Country] FROM [Customers] WHERE ([Country] = ?)">
    <SelectParameters>        
       <asp:Parameter DefaultValue="Mexico" Name="Country" Type="String" />        
    </SelectParameters>

但这不起作用。它会在“''附近给出”不正确的语法。“错误信息。

SelectCommand="EXEC Docs.[DocumentList] @UserName = ?, @Service = ?, @YearGroup = ?, @Category = ?">
<SelectParameters>
   <asp:Parameter DefaultValue="8882074" Name="UserName" />
   <asp:Parameter DefaultValue="9" Name="Service" />
   <asp:Parameter DefaultValue="1" Name="YearGroup" />
   <asp:Parameter DefaultValue="1" Name="Category" />
</SelectParameters>

这也不起作用。

    <asp:SqlDataSource ID="ListViewSqlDataSource" runat="server" 
        ConnectionString="<%$ *** %>" 
        SelectCommand="EXEC [Docs].[CategoryList]" SelectCommandType="StoredProcedure">
        <SelectParameters>
            <asp:Parameter DefaultValue="8882074" Name="UserName" />
            <asp:Parameter DefaultValue="9" Name="Service" />
        </SelectParameters>
    </asp:SqlDataSource>

给我这个错误。 msgstr“”“找不到存储过程''。”“”

但是将selectcommand更改为this可以正常工作。

    SelectCommand="EXEC [Docs].[CategoryList] @UserName = 8882074, @Service = 9"

那么在执行存储过程时如何传递参数?感谢。

1 个答案:

答案 0 :(得分:1)

如果要调用存储过程,则应该:

  • SelectCommand设置为仅存储过程名称
  • SelectCommandType设置为SelectCommandType.StoredProcedure

有了这个,所有通常的参数东西都像以前一样工作!

SelectCommand="Docs.[DocumentList]" SelectCommandType="StoredProcedure"

更新: SelectCommand JUST 存储的proc名称!没有EXEC或其他任何......

试试这个:

<asp:SqlDataSource ID="ListViewSqlDataSource" runat="server" 
    ConnectionString="<%$ *** %>" 
    SelectCommand="[Docs].[CategoryList]"   **JUST THE STORED PROC NAME !!**
    SelectCommandType="StoredProcedure">
    <SelectParameters>
        <asp:Parameter DefaultValue="8882074" Name="UserName" />
        <asp:Parameter DefaultValue="9" Name="Service" />
    </SelectParameters>
</asp:SqlDataSource>