programing

Oracle에서 로컬 변수를 정의하는 가장 간단한 방법은 무엇입니까?

padding 2023. 10. 30. 20:48
반응형

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 값도 옵션 사양으로, 특정 값으로 변수를 초기화할 수 있습니다.
  • 각 변수 선언은 별도의 문이므로 세미콜론으로 종료해야 합니다.

다음 두 가지 방법 중 하나로 변수에 값을 할당할 수 있습니다.

  1. 직접 할당(예:var_nm:= var_value;)
  2. 사용.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

반응형