2012-01-18 15 views
1

これは動作します。execストアドプロシージャのパラメータを渡す方法

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

ストアドプロシージャを呼び出したい場合は、以下を行う必要があります。

  • はすべて、
  • はこれでSelectCommandType
  • SelectCommandType.StoredProcedureから

を設定するだけでストアドプロシージャ名にSelectCommandを設定します以前のように通常のパラメータが機能します!

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

更新:SelectCommandJUSTストアドプロシージャ名である必要があります!

<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> 
+0

ハム:いいえEXECか何か......

はこれを試してみてくださいませんか?ストアドプロシージャは、提供されるパラメータがほとんどないことを要求していました。ちょうどその名前をつけたら、どうやって供給しますか?このように値をハンドコーディングするとうまくいくでしょう。 ** EXEC Docs。[DocumentList](at)UserName = 122、(at)Service = 3、(at)YearGroup = 12、(at)Category = 1 "**しかし、パラメータを動的に指定する必要があります。 – lawphotog

+0

@LaurenceNyein:あなたは ''エントリの全リストを持っています、いいえ??それらはあなたのストアドプロシージャが期待する値です、そして、それはあなたが値を送る方法です... –

+0

はい私はそのストアドプロシージャにリンクする方法を知っています。私は通常、Sqlと私の最初の投稿の最初の例で働いています。 '好きなの?**?**その中に – lawphotog

関連する問題