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 中时,不起作用。

任何人都可以帮助我吗?

谢谢

解决了

最后,问题解决了,将标签移除<SelectParameters> <asp:Parameter Name = "tableVariable" /> </SelectParameters>到sqldatasource中。

谢谢大家!

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 回答