레이블이 SELECT인 게시물을 표시합니다. 모든 게시물 표시
레이블이 SELECT인 게시물을 표시합니다. 모든 게시물 표시

2022년 2월 19일 토요일

(C#동영상)C# LINQ 링크/링큐 Select, SelectMany 비교, 차이점 실습, 닷넷교육동영상, C#학원, 닷넷학원, 자바학원, WPF학원, 닷넷교육, C#교육. 자바교육

 (C#동영상)C# LINQ 링크/링큐 Select, SelectMany 비교, 차이점 실습, 닷넷교육동영상, C#학원, 닷넷학원, 자바학원, WPF학원, 닷넷교육, C#교육. 자바교육



http://ojc.asia/bbs/board.php?bo_table=LecCsharp&wr_id=420 


(동영상)C# LINQ 링크/링큐 Select, SelectMany 비교, 차이점 실습

(동영상)C# LINQ 링크/링큐 Select, SelectMany 비교, 차이점 실습LINQSelect, SelectMany실습C# LINQ(Select, SelectMany)LINQ에서 프로젝션 작업은 필요한 속성을 가지고 오는 것인데 Select, SelectMany를 사용한다.기본적

ojc.asia


https://www.youtube.com/watch?v=GqDWbAOjO4A&list=PLxU-iZCqT52DJyR6gqJy0MCL8RiTVXdos&index=22 



https://www.youtube.com/watch?v=Sp_WKTMGJ8U&list=PLxU-iZCqT52DJyR6gqJy0MCL8RiTVXdos&index=25


LINQ

Select, SelectMany


실습






C# LINQ(Select, SelectMany)


LINQ에서 프로젝션 작업은 필요한 속성을 가지고 오는 것인데 Select, SelectMany를 사용한다. 


기본적으로 Select는 하나의 컬렉션에서 추출하는 것이고, SelectMany는 다중 컬렉션에서 질의가 가능하다.  즉 하나의 컬렉션 안에 또 다른 SUB 컬렉션이 있을 때 SUB 컬렉션에서 데이터를 추출하는 경우에 사용한다.


 

또한 SelectMany는 SQL의 Cross Join과 같이 가능한 모든 조인 결과 집합을 만들어 낼 수 있다.


namespace SemectMany

{

class Customer

{

public string Name { get; set; }

public List<String> Cards { get; set; }

}

class Test

{

static List<Customer> Getcustomers()

{

List<Customer> customers = new List<Customer>{

new Customer {

Name = "박길동",

Cards= new List<string>{"BC","HANA", "WOORI"}},

new Customer {

Name = "김길동",

Cards= new List<string>{"BC","WOORI"}},

new Customer {

Name = "가길동",

Cards= new List<string>{"HANA","WOORI"}},

new Customer {

Name = "하길동",

Cards= new List<string>{"WOORI","BC"}}};

return customers;

}



static void Main(string[] args)

{

List<string> animals = new List<string>() { "cat", "dog", "monkey" };

List<int> number = new List<int>() { 10, 20 };


// SQL의 Cross Join과 같이 가능한 모든 조인 집합을 만듦

var mix1 = number.SelectMany(num => animals, (n, a) => new { n, a }).ToList();

mix1.ForEach(n => Console.WriteLine(n));

Console.WriteLine("-------------1");


// 다중 컬렉션 질의

var mix2 = animals.SelectMany(a => a).ToList();

mix2.ForEach(n => Console.WriteLine(n));

Console.WriteLine("-------------2");


// 단일컬렉션 질의

var animals1 = animals

.Where(n => n.StartsWith("c"))

.Select(n => n).ToList();

animals1.ForEach(n => Console.WriteLine(n));

Console.WriteLine("-------------3");


// 다중컬렉션 질의

var animals2 = animals

.Where(n => n.StartsWith("c"))

.SelectMany(n => n).ToList();

animals2.ForEach(n => Console.WriteLine(n));

Console.WriteLine("-------------4");


// customers에서 이름이 '가'로 시작되는 고객의 이름출력

var result1 = from c in Getcustomers()

  where c.Name.StartsWith("가")

  select c.Name;

result1.ToList().ForEach(n => Console.WriteLine(n));

Console.WriteLine("-------------5");


//new로 만들어내는 무명개체에서 Name추출

var result2 = from c in Getcustomers()

  where c.Name.StartsWith("가")

  select new { c.Name };

result2.ToList().ForEach(n => Console.WriteLine(n));

Console.WriteLine("-------------6");


//Select로 Customer의 Card를 출력, foreach문 2개필요

//바깥쪽 반복문에서 개인별 카드리스트를 출력

//안쪽 반복문에서 카드명을 출력

var result3 = Getcustomers().Select(c => c.Cards);

foreach (List<String> cardList in result3)

{

foreach (string card in cardList)

{

Console.WriteLine(card);

}

}

Console.WriteLine("-------------7");


// 메소드기반 쿼리식에서 SelectMany를 직접사용

// 다중 컬렉션 질의

var result4 = Getcustomers().SelectMany(c => c.Cards);

result4.ToList().ForEach(n => Console.WriteLine(n));

Console.WriteLine("-------------8");


// 메소드기반 쿼리식에서 Where를 이용하여 BC카드를 가진 Customer의 Name을 출력

var result5 = Getcustomers()

  .Where(c => c.Cards.Contains("BC"))

  .Select(c => c.Name);

result5.ToList().ForEach(n => Console.WriteLine(n));

Console.WriteLine("-------------9");


// 메소드기반 쿼리식에서 Customer.Name별 Card를 출력

var result6 = Getcustomers()

.SelectMany(cust => cust.Cards,

  (cust, card) => new { cust.Name, card });

result6.ToList().ForEach(n => Console.WriteLine(n));

Console.WriteLine("-------------10");

}

}

}



#LINQ, #링크, #링큐, #Select, #SelectMany, #닷넷교육, #시샵교육, #닷넷동영상, #시샵동영상, LINQ, 링크, 링큐, Select, SelectMany, 닷넷교육, 시샵교육, 닷넷동영상, 시샵동영상,  

2021년 12월 24일 금요일

PL/SQL에서 SQL, SELECT 사용, SELECT 예외처리, too_many_rows , no_data_found, 오라클PLSQL동영상, PLSQL교육, 오라클교육, 자바교육, ORACLE교육

 









PL/SQL에서 SQL, SELECT 사용, SELECT 예외처리, too_many_rows , no_data_found, 오라클PLSQL동영상, 오라클교육, 자바학원, 오라클학원


오라클 PL/SQL



SELECT 사용하기

SELECT 예외처리



강의 : 이종철




PL/SQL에서 SQL문장 사용


  • PL/SQL은 SELECT, INSERT, UPDATE, DELETE와 같은 DML(Data Manipulation Language) 및 COMMIT, ROLLBACK과 같은 TCL(Transaction Control Language)을 지원 합니다.
  • DDL(Data Definition Language)에 대해서는 지원하지 않습니다.(CREATE, DROP, ALTER). 만약 사용하려 한다면 Dynamic SQL(EXECUTE IMMEDIATE 구문, DBMS_SQL패키지 이용)을 사용해야 합니다.
  • DCL(Data Control Language)도 지원하지 않습니다.(GRANT, REVOKE)


SELECT문의 사용


  • SELECT문의 종료는 세미콜론(;)으로 표시한다.
  • SELECT절의 칼럼목록과 INTO절의 칼럼목록은 개수 및 데이터 타입이 동일해야 한다.
  • SELECT * 인 경우 %ROWTYPE을 사용하면 좀 더 효율적이다.
  • INTO절은 필수이며 BEGIN~END 사이에서 사용되는 SELECT는 반드시 한 건만 SELECT 되어야 한다. 한 건도 SELECT 되지 않는다면 ORA-01403(NO_DATA_FOUND) 오류가 발생하고 여러 건 SELECT 된다면 ORA-01422(TOO_MANY_ROWS) 오류가 발생한다.


[기본형식]

SELECT  select_list

INTO    변수명 or 레코드이름

FROM    table

WHERE   conditions


-- EMP 테이블에서 이름을 입력받아 해당 사원의 급여 및 입사일자를 표시

SQL> edit ojc14


set serveroutput on

create or replace procedure ojc14

(v_ename in emp.ename%type)

is

v_sal emp.sal%type;

v_hiredate emp.hiredate%type;

begin

select sal, hiredate

into v_sal, v_hiredate

from emp

where ename = v_ename;

  

dbms_output.put_line('급여 : '||to_char(v_sal,'999,999'));

dbms_output.put_line('입사일자 : '||to_char(v_hiredate, 'yyyy.mm.dd'));

end;

/


SQL> @ojc14

프로시저가 생성되었습니다.


SQL> exec ojc14('SMITH')

급여 :    4,500

입사일자 : 1980.12.17



-- SELECT 예외 처리예제

SQL> set serveroutput on

SQL> create or replace procedure ojc15

    (v_sal in emp.sal%type)

    is

       v_ename emp.ename%type;

       v_hiredate emp.hiredate%type;

    begin

       select ename, hiredate

       into v_ename, v_hiredate

       from emp

      where sal = v_sal;

 

      dbms_output.put_line('이름 : '||v_ename);

      dbms_output.put_line('입사일자 : '||to_char(v_hiredate, 'yyyy.mm.dd'));

   end;

   /


프로시저가 생성되었습니다.


SQL> exec ojc15(950);

이름 : JAMES

입사일자 : 1981.12.03


SQL> exec ojc15(1250);

BEGIN ojc15(1250); END;

*

1행에 오류:

ORA-01422: 실제 인출은 요구된 것보다 많은 수의 행을 추출합니다

ORA-06512: "SCOTT.OJC15",  7행

ORA-06512:  1행


-- 예외처리 예문

SQL> set serveroutput on

SQL> create or replace procedure ojc15

    (v_sal in emp.sal%type)

    is

       v_ename emp.ename%type;

       v_hiredate emp.hiredate%type;

    begin

       select ename, hiredate

       into v_ename, v_hiredate

       from emp

      where sal = v_sal;

 

      dbms_output.put_line('이름 : '||v_ename);

      dbms_output.put_line('입사일자 : '||to_char(v_hiredate, 'yyyy.mm.dd'));

 

   exception

     when too_many_rows then

       dbms_output.put_line('데이터가 여러건 추출 되었습니다.');

     when no_data_found then

       dbms_output.put_line('데이터가 한건도 없습니다.');

     when others then

      dbms_output.put_line('SQL ERROR CODE : ' || SQLCODE);

      dbms_output.put_line('SQL ERROR MSG  : ' || SQLERRM);

   end;

   /


프로시저가 생성되었습니다.


SQL> exec ojc15(1250)

데이터가 여러건 추출 되었습니다.


SQL> exec ojc15(9999)

데이터가 한건도 없습니다.



#PL/SQL, #SELECT, #SELECT예외처리, #too_many_rows , #no_data_found, #PLSQL동영상, #오라클교육, #자바학원, #오라클학원, #자바교육, PL/SQL, SELECT, SELECT예외처리, too_many_rows , no_data_found, PLSQL동영상, 오라클교육, 자바학원, 오라클학원, 자바교육, 




(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...