복붙노트

[SQL] 어떻게 오라클 SQL Developer에서 변수를 사용합니까?

SQL

어떻게 오라클 SQL Developer에서 변수를 사용합니까?

다음은 SQL 서버 2000에서 변수를 사용하는 예입니다.

DECLARE @EmpIDVar INT

SET @EmpIDVar = 1234

SELECT *
FROM Employees
WHERE EmployeeID = @EmpIDVar

나는 추가적인 복잡성없이 SQL Developer를 사용하여 Oracle에서 똑같은 일을하고 싶다. 그것은 할 수있는 매우 간단한 일처럼 보인다,하지만 난 간단한 솔루션을 찾을 수 없습니다. 어떻게하니?

해결법

  1. ==============================

    1.나는 버전 3.2에서 SQL-개발자를 사용하고 있습니다. 다른 물건은 나를 위해 작동하지 않았다, 그러나 이것은했다 :

    나는 버전 3.2에서 SQL-개발자를 사용하고 있습니다. 다른 물건은 나를 위해 작동하지 않았다, 그러나 이것은했다 :

    define value1 = 'sysdate'
    
    SELECT &&value1 from dual;
    

    또한 아직, 여기에 제시된 매끄러운 방법이있다.

    (당신은 생략하면 그 값을하라는 메시지가 표시됩니다 part의 "정의")

  2. ==============================

    2.대체 및 바인딩 : SQL-플러스 변수의 두 가지 유형이 있습니다.

    대체 및 바인딩 : SQL-플러스 변수의 두 가지 유형이 있습니다.

    이것은 대체 (대체 변수는 SQL * 플러스 명령 옵션 또는 다른 하드 코딩 된 텍스트를 대체 할 수 있습니다)입니다 :

    define a = 1;
    select &a from dual;
    undefine a;
    

    이 바인드입니다 (바인드 변수는 RDBMS에 실행 된 SQL 및 PL / SQL 문에 대한 데이터 값을 저장, 그들은 하나의 값 또는 전체 결과 집합을 저장할 수) :

    var x number;
    exec :x := 10;
    select :x from dual;
    exec select count(*) into :x from dual;
    exec print x;
    

    당신이 바인드와 쿼리를 실행할 때 SQL 개발자 지원의 대체 변수는 있지만 : var에 당신이 (대화 상자에서) 바인딩을 묻는 메시지가 구문.

    참고:

    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
    
  3. ==============================

    3.SQL * Plus를, 당신은 매우 비슷한 뭔가를 할 수

    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에서, 당신은 값을 입력하라는 메시지가 표시됩니다. 알렉스가 지적한 것처럼, 당신은 또한 알렉스가하는 제안 대체 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;
    
  4. ==============================

    4.간단한 대답 NO.

    간단한 대답 NO.

    그러나 당신은 바인드 변수를 사용하여 다음 버전을 실행하여 비슷한 일을 달성 할 수있다 :

    SELECT * FROM Employees WHERE EmployeeID = :EmpIDVar 
    

    당신이 SQL Developer에서 위의 쿼리를 실행 후에는 바인드 변수의 EmployeeID에 대한 값을 입력하라는 메시지가 표시됩니다.

  5. ==============================

    5.좋아, 나는이에게 해킹을 조금 알고 있지만 이것은 간단한 쿼리가 아닌 스크립트에서 변수를 사용하는 방법입니다 :

    좋아, 나는이에게 해킹을 조금 알고 있지만 이것은 간단한 쿼리가 아닌 스크립트에서 변수를 사용하는 방법입니다 :

    WITH
        emplVar AS
        (SELECT 1234 AS id FROM dual)
    SELECT
        *
    FROM
        employees,
        emplVar
    WHERE
        EmployId=emplVar.id;
    

    당신은 어디에서나 실행 얻을.

  6. ==============================

    6.당신은 대체 변수에 다른 곳에서 읽을 수 있습니다; 그들은 SQL Developer에서 매우 편리한입니다. 하지만 SQL Developer에서 바인드 변수를 사용하려고 맞는 있습니다. 이것이 제가하는 것입니다:

    당신은 대체 변수에 다른 곳에서 읽을 수 있습니다; 그들은 SQL Developer에서 매우 편리한입니다. 하지만 SQL Developer에서 바인드 변수를 사용하려고 맞는 있습니다. 이것이 제가하는 것입니다:

    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에서 당신은 항상 변수 또는 refcursor 중 하나를 SELECT ... INTO해야합니다. 당신은 선택하고 PL / SQL에서 결과 집합을 반환 할 수 없습니다.

  7. ==============================

    7.다음 쿼리를 사용 :

    다음 쿼리를 사용 :

    DECLARE 
      EmpIDVar INT;
    
    BEGIN
      EmpIDVar := 1234;
    
      SELECT *
      FROM Employees
      WHERE EmployeeID = EmpIDVar;
    END;
    
  8. ==============================

    8.나는 귀하의 경우 가장 쉬운 방법이라고 생각 :

    나는 귀하의 경우 가장 쉬운 방법이라고 생각 :

    DEFINE EmpIDVar = 1234;
    
    SELECT *
    FROM Employees
    WHERE EmployeeID = &EmpIDVar
    

    문자열 값의 경우는 같은 것입니다 :

    DEFINE EmpIDVar = '1234';
    
    SELECT *
    FROM Employees
    WHERE EmployeeID = '&EmpIDVar'
    
  9. ==============================

    9.절차는이 스크립트를 사용 할 수없는 경우가 작동이 시도, 그것은 더 절차를 만들 것.

    절차는이 스크립트를 사용 할 수없는 경우가 작동이 시도, 그것은 더 절차를 만들 것.

    with param AS(
    SELECT 1234 empid
    FROM dual)
     SELECT *
      FROM Employees, param
      WHERE EmployeeID = param.empid;
    END;
    
  10. ==============================

    10.SQL 개발자의 기본 "ON"에 의해 속성을 정의합니다. 그것은 "OFF"어떤 경우, 단계 아래에 사용됩니다.

    SQL 개발자의 기본 "ON"에 의해 속성을 정의합니다. 그것은 "OFF"어떤 경우, 단계 아래에 사용됩니다.

    에 정의 설정; = '123'을 정의 batchNo; 갱신 TABLE_NAME SET IND1 = 'Y', IND2 = 'Y'WHERE BATCH_NO = '& batchNo';

  11. from https://stackoverflow.com/questions/5653423/how-do-i-use-variables-in-oracle-sql-developer by cc-by-sa and MIT license