테이블이 있다고 가정합니다.
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;
물론 이것은 예상대로 작동하지 않습니다. 변수 이름을 변경하지 않고 어떻게 작동시킬 수 있습니까?
"변수 이름을 변경할 필요없이" 에 대한 정의를 충분히 자유롭다면 할 수 있습니다 . 멋진 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;
/
비 자격으로 a
에 select
-statement 때문에의 열로 해석됩니다 우선 순위 규칙 :
SQL 문이 열과 로컬 변수 또는 형식 매개 변수 모두에 속하는 이름을 참조하는 경우 열 이름이 우선합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다