Oracle SQL Developer에서 변수를 사용하는 방법
다음은 SQL Server 2000에서 변수를 사용하는 예입니다.
DECLARE @EmpIDVar INT
SET @EmpIDVar = 1234
SELECT *
FROM Employees
WHERE EmployeeID = @EmpIDVar
SQL Developer를 사용하여 Oracle에서도 동일한 작업을 더 이상 복잡하지 않게 수행하고 싶습니다.아주 간단한 일인 것 같지만, 나는 간단한 해결책을 찾을 수 없다.어떻게 해야 하죠?
버전 3.2에서 SQL-Developer를 사용하고 있습니다.다른 건 안 먹혔지만, 이건 성공했어.
define value1 = 'sysdate'
SELECT &&value1 from dual;
또, 지금까지 여기서 가장 교묘한 방법이기도 합니다.
('define' 부분을 생략하면 해당 값을 입력하라는 메시지가 표시됩니다.)
SQL-Plus에는 치환과 바인드의 두 가지 변수가 있습니다.
이것은 치환입니다(치환 변수는 SQL*Plus 명령 옵션 또는 기타 하드 코드화된 텍스트를 대체할 수 있습니다).
define a = 1;
select &a from dual;
undefine a;
이것은 bind(바인드 변수에는 RDBMS에서 실행되는 SQL 및 PL/SQL 문의 데이터 값이 저장됩니다.이것들은 단일 값 또는 완전한 결과 세트를 유지할 수 있습니다).
var x number;
exec :x := 10;
select :x from dual;
exec select count(*) into :x from dual;
exec print x;
는 대체하지만 Bind SQL Developer를 하여 쿼리를 :var
(대화상자에서) 바인딩을 입력하라는 메시지가 나타납니다.
레퍼런스:
- http://www.oracle.com/technetwork/testcontent/sub-var-087723.html SQL*Plus 대체 변수, Christopher Jones, 2004
UPDATE 대체 변수는 사용하기 조금 까다롭습니다.
define phone = '+38097666666';
select &phone from dual; -- plus is stripped as it is a number
select '&phone' from dual; -- plus is preserved as it is a string
SQL*Plus에서는 매우 유사한 작업을 수행할 수 있습니다.
SQL> variable v_emp_id number;
SQL> select 1234 into :v_emp_id from dual;
1234
----------
1234
SQL> select *
2 from emp
3 where empno = :v_emp_id;
no rows selected
SQL Developer에서 임의의 수의 바인드 변수(콜론으로 접두사)가 있는 문을 실행하면 값을 입력하라는 메시지가 표시됩니다.Alex가 지적한 것처럼 Alex가 제안하는 대체 EXEC 구문을 사용하여 "스크립트 실행" 기능(F5)을 사용할 수도 있습니다.
variable v_count number;
variable v_emp_id number;
exec :v_emp_id := 1234;
exec select count(1) into :v_count from emp;
select *
from emp
where empno = :v_emp_id
exec print :v_count;
네, 이게 좀 해킹이라는 건 알지만 이건 스크립트를 사용하지 않고 단순한 쿼리에서 변수를 사용하는 방법입니다.
WITH
emplVar AS
(SELECT 1234 AS id FROM dual)
SELECT
*
FROM
employees,
emplVar
WHERE
EmployId=emplVar.id;
어디서든 볼 수 있어요
간단히 NO라고 대답합니다.
그러나 바인드 변수를 사용하여 다음 버전을 실행하면 유사한 작업을 수행할 수 있습니다.
SELECT * FROM Employees WHERE EmployeeID = :EmpIDVar
SQL Developer에서 위의 쿼리를 실행하면 바인딩 변수 Employee 값을 입력하라는 메시지가 나타납니다.아이디
대체 변수에 대한 자세한 내용은 다른 곳에서 확인할 수 있습니다. SQL Developer에서 매우 유용합니다.하지만 SQL Developer에서 bind 변수를 사용하려고 합니다.제가 하는 일은 이렇습니다.
SET SERVEROUTPUT ON
declare
v_testnum number;
v_teststring varchar2(1000);
begin
v_testnum := 2;
DBMS_OUTPUT.put_line('v_testnum is now ' || v_testnum);
SELECT 36,'hello world'
INTO v_testnum, v_teststring
from dual;
DBMS_OUTPUT.put_line('v_testnum is now ' || v_testnum);
DBMS_OUTPUT.put_line('v_teststring is ' || v_teststring);
end;
SET SERVEROUTPUT ON
그럼 스크립트 출력 콘솔에 텍스트를 인쇄할 수 있습니다.
우리가 여기서 하고 있는 것은 공식적으로 PL/SQL이라고 불립니다.우리는 순수한 SQL 랜드에서 벗어나 오라클에서 다른 엔진을 사용하고 있습니다.보이시죠?SELECT
위? PL/SQL에서는 항상 해야 합니다.SELECT ... INTO
변수 또는 레퍼서 중 하나입니다.그냥 하면 안 돼SELECT
결과 세트를 PL/SQL로 반환합니다.
이 경우 가장 쉬운 방법은 다음과 같습니다.
DEFINE EmpIDVar = 1234;
SELECT *
FROM Employees
WHERE EmployeeID = &EmpIDVar
문자열 값의 경우 다음과 같습니다.
DEFINE EmpIDVar = '1234';
SELECT *
FROM Employees
WHERE EmployeeID = '&EmpIDVar'
SQL 개발자는 기본적으로 "ON"으로 속성을 정의합니다.「OFF」인 경우는, 다음의 순서에 따릅니다.
set define on; define batchNo='123'; update TABLE_NAME SET IND1 = 'Y', IND2 = 'Y' WHERE BATCH_NO = '&batchNo';
다음 쿼리를 사용합니다.
DECLARE
EmpIDVar INT;
BEGIN
EmpIDVar := 1234;
SELECT *
FROM Employees
WHERE EmployeeID = EmpIDVar;
END;
실행해 보세요.프로시저를 작성하는 것이 좋습니다.프로시저가 가능하지 않으면 이 스크립트를 사용할 수 있습니다.
with param AS(
SELECT 1234 empid
FROM dual)
SELECT *
FROM Employees, param
WHERE EmployeeID = param.empid;
END;
언급URL : https://stackoverflow.com/questions/5653423/how-do-i-use-variables-in-oracle-sql-developer
'programing' 카테고리의 다른 글
Spring @Retryable - 호출 시 기록 방법 (0) | 2023.03.22 |
---|---|
Angular가 있는 자동 다이내믹 브레드 크럼 만드는 방법JS + 각도 UI 라우터 (0) | 2023.03.22 |
프로젝트 웹 사이트를 프로그래밍하기 위한 단순 클린 CMS (0) | 2023.03.22 |
연락처 양식 7 기본 옵션 메일에서 선택한 값으로 인쇄 (0) | 2023.03.22 |
WooCommerce 검색 결과 템플릿 (0) | 2023.03.22 |