2013-03-05 2 views
1

에서 '설정'및 '선택'차이점 SQL PL로 개발할 때 '설정'과 '선택 대상'의 차이점은 무엇입니까?IBM DB2 SQL PL

set var = (select count(1) from emp); 

select count(1) into var from emp; 

완전히 동일합니까? 그들에 대한 문서는 어디에서 찾을 수 있습니까?

답변

1

그들은 어떤 경우에는 내 지식

의 베스트에, 당신은 다른 이상 하나 개의 기술 ..

예를 들어 할 것입니다. 당신은

(t에서 UR과 함께 .... selct) SET에 UR 함께

SET의 VAR1 =를 사용할 수 있지만 SELECT 문에 대한

select a into var1 from t with ur 
+0

즉, 둘 사이에 차이가 있으므로 완전히 동등하지 않습니다. 그 세부 정보를 어디에서 찾을 수 있습니까? – AngocA

+0

죄송합니다.이 둘의 정확한 차이점을 지적한 문서를 보지 못했습니다. 내 의견은 실제적인 경험을 토대로 한 것입니다. 두 가지 다른 명령/명령문을 사용하면 이러한 차이점이 발생합니다. 귀하의 질문이 순수 학문, 전체 목록을 원한다면, 나는 두렵다, 잘 모르겠다. –

-1

SELECT INTO 일을 할 수 있습니다.

SET을 사용하면 함수의 결과를 직접 할당하거나 계산을 수행하거나 다른 변수를 할당 할 수 있습니다. 예 :

SET var = var + 1; 
SET var1 = var; 
+0

이것은 내 질문에 대답하지 않습니다. – AngocA

3

선별을 발행하고, 모든 값이 반환하지 않습니다

  • 에 선택은
  • 세트가 null 값을

당신은 차이를 확인할 수 있습니다를 취득하는 예외를 throw 이 두 저장 프로 시저 :

사용 집합 :

선택 사용
create or replace procedure test1 (
in name varchar(128) 
) 
begin 
declare val varchar(128); 

set val = (select schemaname 
    from syscat.schemata where schemaname = name); 
end @ 

create or replace procedure test2 (
in name varchar(128) 
) 
begin 
declare val varchar(128); 

select schemaname into val 
    from syscat.schemata where schemaname = name; 
end @ 

로 전화가

$ db2 "call test1('nada')" 

    Return Status = 0 

전화는이 둘 사이의 차이

$ db2 "call test2('nada')" 

    Return Status = 0 

SQL0100W No row was found for FETCH, UPDATE or DELETE; or the result of a 
query is an empty table. SQLSTATE=02000 

로 설정을 선택합니다. select into를 사용할 때 처리기를 다루어야합니다.