Oracle에서 로컬 변수를 정의하는 가장 간단한 방법은 무엇입니까?
SQL Server에서는 이렇게 로컬 변수를 정의할 수 있습니다.
declare @id number := 1000
select * from tbl_A where id = @id;
select * from tbl_B where id = @id;
그것은 매우 편리합니다.저도 같은 일을 하려고 했습니다.PL/SQL
효과가 없어요
DECLARE id number;
select 1000 into id from dual;
당신은 비슷한 일을 할 줄 알아요?가장 간단한 방법이 저의 목표입니다.
PL/SQL에서 로컬 변수를 정의하려면 완전한 PL/SQL 블록이 필요합니다.
DECLARE
id NUMBER;
BEGIN
SELECT 1000
INTO id
FROM dual;
END;
아니면 그냥
DECLARE
id NUMBER := 1000;
BEGIN
<<do something that uses the local variable>>
END;
SQL*Plus에서 변수를 선언하려는 경우
SQL> variable id number
SQL> begin
select 1000 into :id from dual;
end;
/
SQL> print id
ID
----------
1000
SQL> SELECT * FROM tbl_a WHERE id = :id
DELCORE 블록의 대안은 WITH 조항을 사용하는 것입니다.
WITH my_params AS (
SELECT 123 AS min_id FROM DUAL
)
SELECT *
FROM some_table
WHERE id > (SELECT min_id FROM my_params)
많은 공급업체가 WITH 조항을 지원하기 때문에 휴대성이 향상되고 매개 변수에서 동적 값으로 원활하게 변경할 수 있습니다.예를 들어,
WITH my_params AS (
SELECT min(id) AS min_id FROM some_id_table
)
SELECT *
FROM some_table
WHERE id > (SELECT min_id FROM my_params)
오라클 SQL용 솔루션
DEF x = foo
SELECT '&x' FROM dual;
결과는 다음과 같습니다.foo
NB: 실행 후에도 변수가 값을 유지합니다.변수 런을 지우는 방법UNDEFINE x
.
PL/SQL에서 변수를 선언하는 일반 구문은 다음과 같습니다.
var_nm 데이터 유형 [NOT NULL := var_value ];
- var_nn은 변수의 이름입니다.
- datatype은 유효한 PL/SQL 데이터 형식입니다.
- NOT NULL은 이 변수에 null 값을 할당할 수 없는 변수에 대한 선택 사양입니다.
- var_value 또는 DEFAULT 값도 옵션 사양으로, 특정 값으로 변수를 초기화할 수 있습니다.
- 각 변수 선언은 별도의 문이므로 세미콜론으로 종료해야 합니다.
다음 두 가지 방법 중 하나로 변수에 값을 할당할 수 있습니다.
- 직접 할당(예:
var_nm:= var_value;
) - 사용.
select from
(예:SELECT col_nm INTO var_nm FROM tbl_nm [WHERE clause];
)
저스틴 동굴이 이미 언급한 것처럼 당신의 경우에는
DECLARE
id number;
BEGIN
SELECT 1000 into id from dual;
dbms_output.put_line('id : '|| id );
END;
/
오어
DECLARE
id number := 1000;
BEGIN
dbms_output.put_line('id : '|| id );
END;
/
참고: '/', 즉 END 키워드 뒤에 백슬래시는 위의 PL/SQL 블록을 실행하는 것을 나타냅니다.
(방금 이 실을 우연히 발견했습니다.)SQL*Plus 12.2부터는 다음과 같이 선언 및 값 할당을 동시에 수행할 수 있습니다.
SQL> 가변번호 = 1000
SQL> tbl_A에서 *를 선택합니다. 여기서 id는 = :id;
Oracle은 이를 input binding이라고 부릅니다.
PL/SQL에서 꼭 해야 하는 경우에는 다른 사람이 답변을 해 주었습니다.
언급URL : https://stackoverflow.com/questions/11298666/what-is-the-simplest-way-to-define-a-local-variable-in-oracle
'programing' 카테고리의 다른 글
Pandas to_sql에서 스키마 지정 (0) | 2023.10.30 |
---|---|
Oracle - 없는 경우에만 인덱스 만들기 (0) | 2023.10.30 |
OpenCSV: 사용자 지정 컬럼 헤더 및 사용자 지정 컬럼 위치를 사용하여 POJO에서 CSV 파일을 생성하는 방법은? (0) | 2023.10.30 |
판다에서 개체별로 한 그룹에 속한 그룹의 수를 구하는 방법은? (0) | 2023.10.30 |
PowerShell Invoke-WebRequest, 원본 파일 이름을 자동으로 사용하는 방법은? (0) | 2023.10.30 |