SQL(Oracle)의 느낌표
데이터베이스에서 V$SQL을 살펴보니 방금 다음과 같은 이상한 쿼리를 발견했습니다.
UPDATE "MYTABLE" "A1" SET "SOMECOLUMN" = (
SELECT "A2"."ANOTHERCOLUMN"
FROM "ANOTHERTABLE"@! "A2"
WHERE "A2".ROWID=:B1
)
구문 @의 의미를 아는 사람?
오라클에서 이런 것을 본 적이 없습니다.
감사해요.
원격 데이터베이스에서 발생한 쿼리입니다.V$SQL에서 이 쿼리를 본 데이터베이스가 @DB_NAME 구문을 사용하여 원격 데이터베이스의 쿼리에서 참조되었습니다.
원격 데이터베이스가 쿼리를 실행하기 위해 데이터베이스에 푸시했지만 쿼리에 응답하려면 데이터베이스가 원격 데이터베이스에서 일부 정보를 끌어와야 합니다.여기서 @!가 들어옵니다. 기본적으로 쿼리가 시작된 데이터베이스에 대한 참조입니다.
예를 들어, 동일한 데이터베이스라도 테스트 데이터베이스 링크를 만들고 다음을 실행합니다.
alter system flush shared_pool;
select sysdate from dual@myself;
select sql_text from gv$sql where sql_fulltext like '%@!%';
SQL_TEXT
--------
SELECT SYSDATE@! FROM "DUAL" "A1"
데이터베이스에서 @는 종종 데이터베이스 링크와 관련됩니다.예를 들어 Oracle에서 'tns_service_name'을 사용하여 암호로 식별된 remote_username에 대한 내 링크 연결을 공용 데이터베이스 링크 생성을 사용합니다.
이 사용자(remote_username) 다음에 테이블이 있는 경우 사용할 수 있는 다른 테이블: "A2" 선택."AnotherTable"의 "AnotherColumn"@mylink "A2"에서 "A2".ROWID=1
여기서 ! 기호가 어떻게 쓰이는지 저는 잘 모르겠습니다.일반적으로 ! 기호는 데이터베이스 클라이언트가 실행 중인 셸에 액세스할 때 사용하는 기호입니다.
이게 당신에게 도움이 됐는지 모르겠네요.행운을 빌어요.
언급URL : https://stackoverflow.com/questions/21548336/exclamation-mark-in-sql-oracle
'programing' 카테고리의 다른 글
왜 Py_를 해야 합니까?C에서 Py_None을 반환하기 전에 INCRECF(Py_None)가 필요합니까? (0) | 2023.11.07 |
---|---|
XElement 네임스페이스(방법?) (0) | 2023.11.07 |
오라클에서 예약된 작업을 삭제하는 방법 (0) | 2023.11.07 |
exec에서 출력 잡기 (0) | 2023.11.07 |
PL/SQL <>의 의미는 무엇입니까? (0) | 2023.11.07 |