Oracle SQL: 테이블 이름 대신 사용되는 변수
MSSQL 스크립트를 Oracle로 변환하는 중인데 테이블 이름이나 열 대신 변수를 사용하는 구문을 파악하지 못했습니다.
다음은 구문을 더 잘 이해할 수 있도록 Oracle SQL Developer에서 작동하도록 시도한 간단한 예입니다.
set serveroutput on format wrapped;
declare
VR_TABLE VARCHAR2(256);
VR_UPDATE VARCHAR2(256);
begin
VR_TABLE :='SYSTEM_STATUS';
EXECUTE IMMEDIATE 'select UPDATE_VERSION INTO VR_UPDATE from ' || VR_TABLE || 'where rownum < 2 ;'
end;
여기서 VR_TABLE은 루프가 반복될 때마다 변경되는 변수 테이블 이름입니다.누가 제가 무엇을 잘못하고 있는지 지적하거나 제가 읽기에 유용한 사이트에 연결해 줄 수 있습니까?저는 이것에 대한 몇 가지 튜토리얼을 읽었지만, 지금까지 운이 없었습니다.
- 테이블 이름과 후속 테이블 이름 사이에 공백이 있어야 합니다.
WHERE
절 - 그
INTO
의 일부가 되어야 합니다.EXECUTE IMMEDIATE
동적 SQL 문의 일부가 아닙니다. - 동적 SQL 문에는 뒤에 세미콜론이 없어야 합니다.
- 그
EXECUTE IMMEDIATE
문은 세미콜론으로 끝나야 합니다.
그것들을 종합하면, 이런 것이 작동할 것입니다.
declare
VR_TABLE VARCHAR2(256);
VR_UPDATE VARCHAR2(256);
begin
VR_TABLE :='SYSTEM_STATUS';
EXECUTE IMMEDIATE 'select UPDATE_VERSION from ' || VR_TABLE || ' where rownum < 2'
INTO VR_UPDATE;
end;
물론, 당신은 아무것도 하지 않을 것이기 때문에.VR_UPDATE
이 익명 블록이 실행되면 아무것도 표시되지 않습니다.
쿼리의 INTO 부분을 쿼리 문자열에 직접 포함해서는 안 됩니다.
구문
EXECUTE IMMEDIATE(<SQL>)
[INTO<variable>]
[USING <bind_variable_value>]
위 구문에는 EXECUTE Immediate 명령이 표시됩니다.
절 INTO는 선택 사항이며 동적 SQL에 값을 가져오는 select 문이 포함된 경우에만 사용됩니다.변수 유형은 select 문의 변수 유형과 일치해야 합니다.
USING 절은 선택 사항이며 동적 SQL에 바인딩 변수가 포함된 경우에만 사용됩니다.
https://www.guru99.com/dynamic-sql-pl-sql.html#2
Dynamic SQL에 대한 더 나은 이해를 위해 이 사이트를 방문할 수 있습니다.
언급URL : https://stackoverflow.com/questions/11622233/oracle-sql-variables-used-in-place-of-table-names
'it-source' 카테고리의 다른 글
var self = 이거? (0) | 2023.08.14 |
---|---|
마스터가 다운된 경우 Mysql 마스터-마스터 복제 (0) | 2023.08.14 |
Android Log.v(), Log.d(), Log.i(), Log.w(), Log.e() - 각 항목을 언제 사용해야 합니까? (0) | 2023.08.14 |
로케일::getDefault()를 기준으로 DateTime 개체를 포맷합니다. (0) | 2023.08.14 |
Action Creator 및 Reducer 없이 React 및 Redux에서 AJAX 호출을 보낼 수 있습니까? (0) | 2023.08.14 |