PL / SQL 변수 이름과 동일한 SQL 열 이름-select 문에서이 작업을 어떻게 수행 할 수 있습니까?

에드 힐

테이블이 있다고 가정합니다.

create table foo (
  col_1     number;
  col_2     number;
);

그런 다음 다음 코드가 있습니다.

declare
   col_1    number;
   col_2    number;
begin
   col_1 := 1;
   select col_2 into col_2 from foo where col_1 = col_1;
end;

물론 이것은 예상대로 작동하지 않습니다. 변수 이름을 변경하지 않고 어떻게 작동시킬 수 있습니까?

user272735

"변수 이름을 변경할 필요없이" 에 대한 정의를 충분히 자유롭다면 할 수 있습니다 . 멋진 PL / SQL 이름 확인을 읽으면 다음과 같이 말합니다.

명명 된 PL / SQL 단위에서 식별자가 선언 된 경우 다음 구문을 사용하여 단위 (블록, 하위 프로그램 또는 패키지)의 이름으로 단순 이름 (선언의 이름)을 한정 할 수 있습니다.

unit_name.simple_identifier_name

다음 예제는 20예상대로 인쇄 됩니다.

create table foo (a number, b number);

insert into foo values(1, 10);
insert into foo values(2, 20);
insert into foo values(3, 30);

begin
  <<bar>>
  declare
    a number;
    b number;
  begin
    a := 2;
    select b into bar.b from foo where a = bar.a;
    dbms_output.put_line(b);
  end;
end;
/

변수 이름은 변경되지 않습니다. 대신 그들은 흠 ... 더 자격이 있습니다 :)

다음은 작동하지 않습니다.

begin
  declare
    a number;
    b number;
  begin
    a := 2;
    select foo.b into b from foo where foo.a = a;
    dbms_output.put_line(b);
  end;
end;
/

비 자격으로 aselect-statement 때문에의 열로 해석됩니다 우선 순위 규칙 :

SQL 문이 열과 로컬 변수 또는 형식 매개 변수 모두에 속하는 이름을 참조하는 경우 열 이름이 우선합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관