이 질문은 StackOverflow에서 발견 된 몇 가지 다른 질문과 비슷하지만 새로운 질문을하기에 충분할만큼 중요한 차이점이 있으므로 여기에오라클의 동적 SQL에서 결과를 얻는 중
Oracle의 동적 SQL에서 결과 집합을 가져 와서 동적 SQL 문을 직접 실행 한 것처럼 결과 집합을 SqlDeveloper와 같은 도구로 표시하려고합니다.
EXEC sp_executesql N'select * from countries'
이상 제대로 :
DECLARE @stmt nvarchar(100)
SET @stmt = N'select * from countries'
EXEC sp_executesql @stmt
이 너무 구체적으로, SQL Server의 간단, 여기에 SQL Server 관리 Studio 또는 쿼리 Explorer에서 결과 집합을 반환하는 SQL Server의 예입니다
질문 "How to return a resultset/cursor from a Oracle PL/SQL anonymous block that executes Dynamic SQL?"은 동적 SQL을 커서로 실행하여 문제의 첫 번째 문제를 해결합니다. 질문 "How to make Oracle procedure return result sets"도 비슷한 대답을 제공합니다. 웹 검색은 똑같은 주제의 많은 변형을 보여주었습니다. 모두 내 질문의 첫 번째 부분 만 다루었습니다. SqlDeveloper에서 수행하는 방법을 설명하는 this post이 발견되었지만 SqlDeveloper의 기능 중 일부를 사용합니다. 실제로 SQL 코드에 자체 포함 된 솔루션을 필요로하는 사용자 지정 쿼리 도구를 사용하고 있습니다. 이 사용자 지정 쿼리 도구는 비슷하게 print (dbms_output.put_line) 문 출력을 표시하는 기능이 없습니다. 결과 세트 만 표시합니다. 여기에 '012 즉시 실행 ... 대량 수집'을 사용하는 one more possible avenue이지만이 예제는 결과를 dbms_output.put_line 문의 루프로 다시 렌더링합니다. This link은 주제를 다루려고 시도하지만 그 질문은 결코 거기에 대답하지 못했습니다.
이것이 가능하다고 가정하면 하나 이상의 조건을 추가 할 것입니다. 제한된 DB 권한으로 인해 함수 또는 프로 시저를 정의하지 않고이 작업을 수행하고 싶습니다. 즉, 동적 SQL을 포함하는 자체 포함 된 PL/SQL 블록을 실행하고 SqlDeveloper 또는 이와 유사한 도구에서 결과 집합을 반환하고자합니다.
그래서 요약 :
- 내가 임의의 SQL 문 (따라서 동적 SQL)를 실행합니다.
- 플랫폼은 Oracle입니다.
- 솔루션은 프로 시저 또는 기능이없는 PL/SQL 블록이어야합니다.
- 결과는 표준 결과 집합으로 생성되어야합니다. 인쇄 문이 없습니다.
- SqlDeveloper 특수 기능을 사용하지 않고 출력을 SqlDeveloper에서 결과 집합으로 렌더링해야합니다.
의견이 있으십니까?
게리에게 감사드립니다. DBMS_SQL 또는 XMLFOREST에 익숙하지 않아 두 가지를 모두 읽습니다. 아마 나는 무언가를 놓치고있다. 그러나 나는 어떤 기술이 내가 구하는 것을하지 않는다고 믿는다. DBMS_SQL 제안에 대해서는 2 가지 문제점이 있습니다. 첫째, 목표 명세서에있는 내용에 대한 사전 지식이 필요합니다. 둘째, SQL Server 예제와 같은 단순한 결과 집합으로 연결되지는 않습니다.한 가지 설명 : 예, 맞춤 GUI 도구를 사용하고 있지만 솔루션은 먼저 PL/SQL 코드를 사용하여 SqlDeveloper에서 작동해야하며 두 기법 중 어떤 방식으로 수행 할 수 있는지는 알 수 없습니다. –