在 sqldatasource (aspnet) 中声明表变量
本文关键字:声明 变量 sqldatasource aspnet | 更新日期: 2023-09-27 17:56:42
我有一个查询,我在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中的问题。
谢谢大家!
尝试创建一个存储过程,如下所示:
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>
仅仅将声明的表转换为临时表是不值得
的,即CREATE TABLE #tableVariable (fecha DATE, valor Float)
稍后您将需要一个 DROP TABLE #tableVariable 以确保您正在清理内存,但我相信它会产生预期的效果。
我认为您不应该将冗长而复杂的查询放入 SqlDataSource - 这实际上是为了将表或视图绑定到数据网格,而不必在代码后面弄乱。如果要运行复杂查询,则应设置一个存储过程来执行此操作并从 SqlCommand 调用该查询,或者将查询的文本放入 SqlCommand 中。无论哪种方式,我都不认为SqlDataSource是这里的方式。