您的位置:程序门 -> .net技术 -> c#



有人用过sqlserver 2005里的cte么,c#里要怎么用这个东西啊,


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


有人用过sqlserver 2005里的cte么,c#里要怎么用这个东西啊,
发表于:2007-02-27 10:18:40 楼主
谁给个例子,cte是要放在procedure里么
发表于:2007-02-27 10:38:061楼 得分:0
http://www.chinaccna.com/sql/sqlserver/200701/27477.html

实现递归很方便,实现分页也很方便,其它的还没有用到。
发表于:2007-02-27 10:46:182楼 得分:0
公用表表达式   (cte)   可以认为是在单个   select、insert、update、delete   或   create   view   语句的执行范围内定义的临时结果集。cte   与派生表类似,具体表现在不存储为对象,并且只在查询期间有效。与派生表的不同之处在于,cte   可自引用,还可在同一查询中引用多次。

cet   可用于:  

创建递归查询。有关详细信息,请参阅使用公用表表达式的递归查询。


在不需要常规使用视图时替换视图,也就是说,不必将定义存储在元数据中。


启用按从标量嵌套   select   语句派生的列进行分组,或者按不确定性函数或有外部访问的函数进行分组。


在同一语句中多次引用生成的表。


使用   cte   可以获得提高可读性和轻松维护复杂查询的优点。查询可以分为单独块、简单块、逻辑生成块。之后,这些简单块可用于生成更复杂的临时   cte,直到生成最终结果集。  

可以在用户定义的例程(如函数、存储过程、触发器或视图)中定义   cte。

cte   的结构
cte   由表示   cte   的表达式名称、可选列列表和定义   cet   的查询组成。定义   cte   后,可以在   select、insert、update   或   delete   语句中对其进行引用,就像引用表或视图一样。cte   也可用于   create   view   语句,作为定义   select   语句的一部分。  

cte   的基本语法结构如下:

with   expression_name   [   (   column_name   [,...n]   )   ]

as

(   cte_query_definition   )

只有在查询定义中为所有结果列都提供了不同的名称时,列名称列表才是可选的。

运行   cte   的语句为:

select   <column_list>

from   expression_name

示例
下面的示例显示了   cte   结构的组件:表达式名称、列列表和查询。cte   表达式   sales_cte   包含三个列(salespersonid、numberoforders   和   maxdate),在每个销售人员   salesorderheader   表中被定义为销售订单总数和最近销售订单日期。执行语句时,cte   将被引用两次:一次返回为销售人员所选的列,另一次检索销售经理的类似详细信息。销售人员和销售经理的数据都返回在一行中。

  复制代码  
use   adventureworks;
go
with   sales_cte   (salespersonid,   numberoforders,   maxdate)
as

        select   salespersonid,   count(*),   max(orderdate)
        from   sales.salesorderheader
        group   by   salespersonid
)
select   e.employeeid,   os.numberoforders,   os.maxdate,
        e.managerid,   om.numberoforders,   om.maxdate
from   humanresources.employee   as   e
        join   sales_cte   as   os
        on   e.employeeid   =   os.salespersonid
        left   outer   join   sales_cte   as   om
        on   e.managerid   =   om.salespersonid
order   by   e.employeeid;
go

 
发表于:2007-02-27 11:12:493楼 得分:0
学习了哈哈
发表于:2007-02-27 11:21:334楼 得分:0
我想知道c#里怎么调用,是和直接使用sql一样么,


快速检索

最新资讯
热门点击