Welcome to Sign in | Help

Re: Dynamic Management Views and Functions – Pain-free Introduction

  •  12-05-2006, 7:51 PM

    Re: Dynamic Management Views and Functions – Pain-free Introduction

    Operatorul APPLY

     

    Operatorul APPLY (similar unui CROSS JOIN) permite pentru fiecare rand al unui tabel invocarea unei table expression (expresie tabelara) gen tabel, view, tabel derivat sau functii tip table-valued (functia returneaza un tabel).

    Exista doua forme:

    §          CROSS APPLY – un rand din tabelul caruia i se aplica operatorul este inclus in rezultat doar daca expresia tabelara returneaza rezultate pentru acel rand

    §          OUTER APPLY – toate randurile din tabelul caruia i se aplica operatorul

     

    Sintaxa:

    FROM left_table_source

    {OUTER | CROSS} APPLY right_table_source

     

    Exemplu:

    USE AdventureWorks;

    GO

    -- functia OrdineRecente returneaza ultimele

    -- doua ordine pentru un client

    CREATE FUNCTION Sales.OrdineRecente(@CustomerID int)

    RETURNS TABLE AS

    RETURN   

    SELECT TOP (2) SalesOrderID, OrderDate   

    FROM Sales.SalesOrderHeader   

    WHERE CustomerID = @CustomerID   

    ORDER BY OrderDate DESC

    GO

     

    -- exemplu CROSS APPLY

    SELECT        S.[Name] as Customer,

    O.SalesOrderID, O.OrderDate

    FROM Sales.Store S

    CROSS APPLY

    Sales.OrdineRecente(CustomerID) AS O

     

    -- exemplu OUTER APPLY

    SELECT        S.[Name] as Customer,

    O.SalesOrderID, O.OrderDate

    FROM Sales.Store S

    OUTER APPLY

    Sales.OrdineRecente(CustomerID) AS O


    Cristian Andrei Lefter, SQL Server MVP
    MCT, MCSA, MCDBA, MCAD, MCSD .NET,
    MCTS, MCITP - Database Administrator SQL Server 2005
    http://sqlserver.ro
View Complete Thread
Powered by Community Server (Commercial Edition), by Telligent Systems