0

Microsoft SQL Server Management Studio で試したクエリがあり、このクエリは正常に動作します。

DECLARE @tableVariable TABLE (fecha DATE, valor Float);
INSERT @tableVariable SELECT fecha, valor FROM table1;
SELECT * FROM @tableVariable

VisualStudio に移動してこのクエリを sqldatasource に貼り付けると、機能しません。

誰でも私を助けることができますか?

ありがとう

解決した

Finally, the problem is solved remove the tag <SelectParameters> <asp:Parameter Name = "tableVariable" /> </SelectParameters> into sqldatasource.

Thanks to all!

4

3 に答える 3

3

次のように、ストアド プロシージャを作成してみてください。

CREATE PROCEDURE ComplexQuery
as
    DECLARE @tableVariable TABLE (fecha DATE, valor Float);
    INSERT @tableVariable SELECT fecha, valor FROM table1;

    -- more complex logic in here

    SELECT * FROM @tableVariable

go

次に、データ ソースでプロシージャの名前を指定します。

例:

        <asp:SqlDataSource
            id="SqlDataSource1"
            runat="server"
            ConnectionString="..."
            SelectCommandType="StoredProcedure"                
            SelectCommand="ComplexQuery">
        </asp:SqlDataSource>
于 2013-01-30T09:22:09.300 に答える
1

宣言されたテーブルを一時テーブルに変換するだけの価値はありませんか

CREATE TABLE #tableVariable (fecha DATE, valor Float)

メモリを確実に消去するには、後で DROP TABLE #tableVariable が必要になりますが、望ましい効果が得られると思います。

于 2013-01-30T08:53:06.273 に答える
0

長くて複雑なクエリを SqlDataSource に入れる必要はないと思います。これは、コード ビハインドをいじる必要なく、テーブルまたはビューをデータグリッドにバインドするためのものです。複雑なクエリを実行する場合は、ストアド プロシージャをセットアップしてそれを実行し、それを SqlCommand から呼び出すか、クエリのテキストを SqlCommand に入れる必要があります。いずれにせよ、SqlDataSource がここに行く方法だとは思いません。

于 2013-01-30T09:01:28.817 に答える