dynamic sql 예제

OCI, Pro*C/C++또는 Pro*COBOL를 사용하여 동적 SQL을 실행하는 응용 프로그램이 있는 경우 PL/SQL 저장 프로시저 및 함수 내에서 네이티브 동적 SQL로 전환하는 것이 좋습니다. 클라이언트 측 응용 프로그램에서 동적 SQL 작업을 수행하는 데 필요한 네트워크 왕복은 성능이 저하될 수 있습니다. 저장 프로시저는 서버에 상주하여 네트워크 오버헤드를 제거할 수 있습니다. OCI, Pro*C/C++또는 Pro*COBOL 응용 프로그램에서 PL/SQL 저장 프로시저 및 저장된 함수를 호출할 수 있습니다. 마지막 예로서 사용자가 WHERE 절에서 선택한 조건자로 선택한 테이블의 모든 데이터를 쿼리할 수 있는 프로시저를 만들어 보겠습니다. 동적 SQL을 빌드할 때 LIKE 연산자, IN 연산자 및 주문 BY 절을 사용해야 하는 경우가 있을 수 있습니다. 그러나 이러한 연산자 및 Order By 절에 사용되는 매개 변수는 sp_executesql을 사용하는 동안 “=” 및 “사이” 연산자에서 일반적으로 수행하는 것처럼 작동하지 않습니다. 일반적으로 sp_executesql은 절에 의한 순서에 대한 매개 변수 대체를 수행하지 않으며 이렇게 하면 열 참조 문제가 발생합니다. LIKE 연산자와 IN 연산자를 사용하면 구문 오류가 발생하며 동적 SQL 문에 매개 변수를 포함할 때 수정할 수 없습니다. 이 문제는 Dynamic SQL 문에 실제 매개 변수 값을 포함 하 여 해결할 수 있습니다. 다음은 sp_executesql을 사용하는 동안 Like 연산자, IN 연산자 및 OrderBy 절을 사용하는 방법을 보여 주는 예제입니다.

이 기술은 PL/SQL 변수 및 형식을 SQL DML 문과 더 밀접하게 통합하는 데 도움이 되지만 동적 SQL 문에서 PL/SQL 레코드를 바인딩 변수로 사용할 수는 없습니다. 기본 동적 SQL 및 Oracle9i 제공 PL/SQL 패키지 및 형식 참조 사용에 대한 자세한 내용은 DBMS_SQL 패키지 사용에 대한 자세한 내용은 PL/SQL 사용자 설명서 및 참조입니다. PL/SQL 사용자 가이드 및 참조에서 네이티브 동적 SQL을 단순히 동적 SQL이라고 합니다. 다음 예제에서는 하나의 바인드 변수(:jobname)와 두 개의 선택 열(에남 및 sal)이 있는 동적 쿼리 문을 포함합니다. 이렇게 하면 동적 SQL이 정적 SQL보다 훨씬 유연해집니다. 동적 SQL을 사용하면 SQL을 다양한 환경에 쉽게 조정할 수 있으므로 재사용 가능한 코드를 작성할 수 있습니다. 여러 번 재사용할 수 있는 Transact-SQL 문 또는 일괄 처리 또는 동적으로 빌드된 문장을 실행합니다. Transact-SQL 문 또는 일괄 처리에는 포함된 매개 변수가 포함될 수 있습니다. T-SQL에서는 EXEC의 대안인 sp_executesql 저장 프로시저를 사용하여 동적 SQL을 실행할 수도 있습니다. 입력과 출력 모두 : 그것은 당신이 매개 변수를 사용할 수 있습니다.

SQL Server가 캐시된 실행 계획을 재사용할 수 있기 때문에 성능에 있어 일반적으로 EXEC보다 낫습니다. 동적 SQL은 런타임까지 기다려 테이블 이름을 지정할 수 있으므로 이 문제를 해결할 수 있습니다. 예를 들어 “동적 SQL이란 무엇입니까?”에서 설명하는 샘플 데이터 웨어하우스 응용 프로그램에서는 분기마다 새 테이블이 생성되며 이러한 테이블은 항상 동일한 정의를 갖습니다. 사용자가 런타임에 동적 SQL을 사용하는 방법, 필요할 때 및 하지 말아야 할 시기와 유사한 동적 SQL 쿼리를 사용하여 테이블 이름을 지정하도록 할 수 있습니다. 따라서 동적 쿼리를 작성하는 세 가지 방법은 다음과 같습니다. 위의 것 외에도 동적 SQL 설정 및 사용에 대한 다른 관점을 제공하는 몇 가지 다른 문서는 다음과 같습니다.