Как передать параметры, когда хранимая процедура exec - PullRequest
1 голос
/ 18 января 2012

Это будет работать.

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>

Дает мне эту ошибку."" "Не удалось найти хранимую процедуру ''." ""

Но изменение команды select на это работает нормально.

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

Так как мне передать параметры при выполнении хранимой процедуры?Спасибо.

1 Ответ

1 голос
/ 18 января 2012

Если вы хотите вызвать хранимую процедуру, вам следует:

  • установить для SelectCommand только имя хранимой процедуры
  • установить для SelectCommandType значение SelectCommandType.StoredProcedure

При этом все обычные параметры работают как раньше!

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

Обновление: SelectCommand должно быть JUST имя сохраненного процесса!Нет 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>
...