4/02/2013

Scalar Subquery Expressions

السلام عليكم
Scalar Subquery Expressions

هو عباره عن subquery  يقوم  بأسترجاع قيمه واحده من عمود فى صف واحد وقيمه scalar subquery expression تأتى من جمله الـ SELECT...
 فى حاله ان scalar subquery يسترجع 0 اذن فـ قيمته تساوى null فى حاله scalar subquery قام بأسترجاع اكثر من صف -returns more than one row- تظهر اوركل خطأ.

يمكنك استخدام Scalar Subquery Expressions  فى الحالات التاليه:


The condition and expression part of DECODE and CASE
All clauses of SELECT except GROUP BY
The SET clause and WHERE clause of an UPDATE statement


ولا يمكنك استخدامه فى الحالات التاليه :
As default values for columns and hash expressions for clusters
In the RETURNING clause of DML statements
As the basis of a function-based index
In GROUP BY clauses, CHECK constraints, WHEN conditions
In CONNECT BY clauses
In statements that are unrelated to queries, such as CREATE PROFILE

بعض الأمثله على Scalar Subquery Expressions :
مثال 1 يوضح طريقه استخدامه مع Case expressions 



SELECT EMPLOYEE_ID
     , LAST_NAME
     ,(CASE
       WHEN DEPARTMENT_ID =
                          (SELECT DEPARTMENT_ID
                           FROM   DEPARTMENTS
                           WHERE  LOCATION_ID = 1800)
                           THEN 'Canada' ELSE 'USA' END) LOCATION
FROM EMPLOYEES;


EMPLOYEE_ID LAST_NAME                 LOCATION
----------- ------------------------- --------
        198 OConnell                  USA      
        199 Grant                     USA      
        200 Whalen                    USA      
        201 Hartstein                 Canada   
        202 Fay                       Canada   
        203 Mavris                    USA      
        204 Baer                      USA      
        205 Higgins                   USA      
        206 Gietz                     USA  


مثال 2 يوضح طريقه استخدامه مع Order by


SELECT EMPLOYEE_ID
     , LAST_NAME
FROM   EMPLOYEES E
ORDER BY (SELECT DEPARTMENT_NAME
          FROM   DEPARTMENTS D
          WHERE  E.DEPARTMENT_ID = D.DEPARTMENT_ID);

EMPLOYEE_ID LAST_NAME               
----------- -------------------------
        205 Higgins                   
        206 Gietz                     
        200 Whalen                    
        100 King                      
        101 Kochhar                   
        102 De Haan                   
        109 Faviet                    
        108 Greenberg                 
        112 Urman                     
        111 Sciarra  
-->

No comments:

Post a Comment