2017-11-29 8 views
0

Oracle SQL 스크립트에서 변수를 사용하려고합니다. 다음과 같이 내 변수를 정의한 How to declare variable and use it in the same SQL script? (Oracle SQL) 게시물을 다음과 같습니다변수 정의 Oracle 스크립트

DEFINE dummyvar INT := 1; 
SELECT '&dummyvar' FROM DUAL; 

이 그러나 리드하는 것은 (이 값을 요청 생성 팝업을 유지하는 변수를 재사용 할 때) 스크립트를 실행할 때의이 값을 요청하는 팝업합니다. 변수의 값이 정의 될 때 팝업 생성을 방지 할 수 있습니까? 위의 예제에서 나는 팝업의 생성을 막고 싶다. 변수가 다음과 같이 정의 된 경우 :

DEFINE dummyvar INT; 
SELECT '&dummyvar' FROM DUAL; 

팝업이 팝업으로 입력 될 수 있습니다.

SQL Developer에서 스크립트를 실행하기위한 것입니다.

감사합니다.

+0

SQL Developer (또는 PL/SQL Developer 또는 Toad 등)에 관한 것이면 질문을 확인하고 태그를 답니다. 어떤 종류의 "오라클 스크립트"인지는 명확하지 않습니다. –

+0

질문을 편집하여 SQL Developer에 대한 참조를 추가합니다. –

답변

0

당신은 저장된 조회 또는 스크립트, SQL의 *를 실행 플러스 (& 변수 또는 & & 변수 형태로) 변수를 참조하는 각 대체 변수에 대한 변수 값을 대체 할 때마다. SQL * Plus는 변수를 UNDEFINE 할 때까지이 세션에서 변수 값을 묻지 않습니다.

SQL * Plus 명령 연속 문자를 사용하여 정의 된 변수의 값이 여러 줄로 확장되는 경우 SQL * Plus는 각 연속 문자와 캐리지 리턴을 공백으로 바꿉니다. 예를 들어, SQL *이 플러스 당신은 예기치 않은 결과가 발생할 수 있습니다 당신이 그들에게 전달합니다 값으로 동일 할 수있다 이름으로 변수를 정의하지 않도록해야

DEFINE TEXT = 'ONE- 
TWO- 
THREE' 

DEFINE TEXT = 'ONE TWO THREE' 

로 해석합니다. 정의 된 변수에 제공된 값이 변수 이름과 일치하면 일치하는 변수의 내용이 제공된 값 대신 사용됩니다.

일부 변수는 SQL * Plus가 시작될 때 미리 정의됩니다. 해당 정의를 보려면 DEFINE을 입력하십시오.

변수 POS에 값 MANAGER를 할당하려면 다음을 입력합니다 & POS에 대한 참조를 포함하는 명령을 실행하면

DEFINE POS = MANAGER 

이, SQL은 * 플러스 & POS의 값 관리자를 대체 POS 값을 요구하지 않습니다.

유형, 변수 DEPARTMENT_ID에 CHAR 값 20을 지정하려면 : 당신이 수 (20), SQL의 *를 입력 플러스 두 개의 문자, 2, 0으로 구성된 DEPARTMENT_ID하는 CHAR 값을 할당하더라도

DEFINE DEPARTMENT_ID = 20 

.

이 결과 DEPARTMENT_ID의 값이 20

0123임을 나타낸다

DEFINE DEPARTMENT_ID 
DEFINE DEPARTMENT_ID = "20" (CHAR) 

입력 DEPARTMENT_ID의 정의를 나열하려면

0

특정 데이터 형식이 필요한 경우 define 대신 VAR을 사용할 수 있습니다. INTVAR에서 유효하지 않으며 SQL, PL/SQL에서만 유효합니다.

이것은 RUN 스크립트 (F5)를 사용하는 SQL 개발자에서 작동합니다.

VAR dummyvar NUMBER; 
EXEC :dummyvar := 1; 
SELECT :dummyvar value FROM DUAL; 

이 값은 SQL * Plus에서 작동합니다. 올바른 구문은 DEFINE입니다. = 대신 :=을 사용하고 있습니다. 또한 따옴표로 묶으면 값을 무시하게됩니다.

DEFINE dummyvar = 1; 
SELECT &dummyvar FROM DUAL;