ECPG

ECPG

Postgre에서 ECPG는 표준이다.SQL 데이터베이스 내장, C 프로그래밍 언어로 작성된 프로그램에 SQL을 내장하기 위한 클라이언트 프로그래밍 인터페이스.[1]Postgre에 액세스할 수 있는 옵션을 제공한다.SQL 명령을 사용하여 응용프로그램의 C 코드에서 직접 SQL 데이터베이스.

사용법

용도는 2단계로 나눌 수 있다.먼저 .pgc 파일을 생성해야 하는데, 이 파일은 내장된 SQL 코드가 있는 C 코드로 구성된다.그러한 파일에서는 SQL 코드가 응용 프로그램의 C 코드에 직접 삽입될 것이다.SQL 명령은 다음과 같은 방법으로 C 코드에 삽입되어야 한다.

// … C 코드...EXEC SQL <sql-statements>; // ...C 코드... 

데이터베이스에 연결하는 방법 예:

집행부 SQL 연결  databaseename[@호스트 이름][:입항하다] [AS 접속명] [사용자 사용자 이름]; 

내장형 SQL 파트는 ECPG 전처리기(preprocessor)를 통해 처리되며, 여기서 SQL 코드는 ecpg 라이브러리(libecpg.a 또는 libecpg.so)에 대한 호출로 대체된다..pcg 파일도 ANSI 표준에 따라 .c파일로 변환하는 ecpg로 사전 처리된다.따라서 두 번째 단계에서는 생성된 .c 파일을 표준 C 컴파일러로 직접 컴파일할 수 있다.[2]

다음 명령은 my_c_file_with_embedded_sql_commands.pcg 파일에서 my_c_file_with_embedded_sql_commands.c 파일을 생성하며, 이 파일은 순수 C 코드로 추가로 처리할 수 있다.

$ ecpg my_c_file_with_sql_sql_sql.pcg

postgre에서 사용할 수 있는 ecpg의 소스 코드도 있다.SQL 소스 코드 git 저장소.

참고: 사전 처리된 .c 코드를 컴파일하는 동안 생성된 호출이 연결된 방법을 찾을 수 있도록 ecpg 라이브러리(libepcg)를 연결하는 것을 잊지 마십시오.

호스트 변수 사용

애플리케이션 코드에 SQL 데이터베이스 명령을 내장할 때 중요한 부분은 애플리케이션과 데이터베이스 간의 데이터 교환이다.이를 위해 호스트 변수를 사용할 수 있다.호스트 변수는 내장된 SQL 코드에서 직접 사용할 수 있으므로, 런타임에 C 코드의 값을 문자열로 하여 수동으로 SQL 문을 생성할 필요가 없다.

C 코드에 변수 이름 변수가 있다고 가정할 경우:

집행부 SQL 삽입 INO 탭 이름 가치 (:변수 이름); 

이것은 어느 문장에서나 사용할 수 있으며, INSERT 문은 간단한 예시로서 선택되었다.

위의 예는 C 변수를 SQL로 전달하는 방법을 보여주지만, 데이터는 또한 반대 방향인 애플리케이션으로 전달될 수 있다.다음 예는 SQL의 값을 애플리케이션의 C 변수에 다시 전달하는 방법을 보여준다.

집행부 SQL 시작 선언하다 섹션; 바카르 변수 이름; 집행부 SQL  선언하다 섹션;  집행부 SQL 선택 칼럼 이름 INO :변수 이름 From 탭 이름; 

단순성을 위해 테이블 이름에 행이 하나만 있다고 가정해 봅시다.이 문장은 변수 변수에 열 열 이름의 값을 삽입한다.INT 절을 지원하는 모든 명령은 예를 들어 FETCH 명령과 같은 방법으로 사용될 수 있다.

오류 처리

보다 나은 오류 처리를 위해 ECPG는 SQL 통신 영역(sqlca)이라는 구조도 제공한다.이 구조는 sql 문을 실행할 때마다 채워지며(모든 스레드는 자체[3] sqlca를 가지고 있음) 경고 및 오류 정보(예: 반환 코드)를 포함한다.sqlca의 데이터는 데이터베이스 응답에 따라 작성되며 디버깅 목적으로 사용될 수 있다.

기타 인터페이스

ECPG는 C 프로그래밍 언어의 SQL 임베딩을 지원하기 때문에 C++ 프로그래밍 언어의 임베딩을 간접적으로 지원하기도 한다.SQL 파트는 C 라이브러리 호출로 변환된다.이것들은 다른 프로그래밍 언어로 쓰여진 모듈들 사이의 연계를 제공하는 외부 "C" 조항의 내부에서 생성된다.[4]ECPG 전처리가 C++ 프로그래밍 언어의 특정 구문 및 예약 단어를 이해하지 못하기 때문에 C++ 코드와 함께 ECPG를 사용하는 데에는 몇 가지 한계가 있다.그러한 구문과 단어를 사용하면 응용 프로그램의 예기치 않은 동작으로 이어질 수 있다.링크된 C 모듈에서 내장된 SQL 명령을 분리하여 C++ 애플리케이션에서 호출하는 것이 좋다.[5]

내부 ECPG 외에도 C++, 자바, 루아, 에 대한 다양한 외부 인터페이스가 있다.NET, Node.js, Python, PHP 및 기타 Postgre에서 사용 가능한 제품내장된 SQL 옵션을 확장하기 위해 추가할 수 있는 SQL 데이터베이스.임베디드 SQL을 지원하는 다른 데이터베이스도 있으며, 또한 Java, 와 같은 C 언어 이외의 언어로도 존재한다.NET, Fortran, COBOL, PL/I.

참조

  1. ^ "PostgreSQL Homepage". PostgreSQL. The PostgreSQL Global Development Group. Retrieved 2015-06-06.
  2. ^ Ahmed, Ibrar, Fayyaz, Asif and Shahzad, Amjad (27 February 2015). PostgreSQL Developer's Guide. Packt Publishing Ltd, 2015. p. 197. ISBN 978-1783989034. Retrieved 6 June 2015.{{cite book}}: CS1 maint : 복수이름 : 작성자 목록(링크)
  3. ^ "SQLCA". PostgreSQL. The PostgreSQL Global Development Group. Retrieved 2018-01-23.
  4. ^ "CPP Linkage". CPP Reference. CPP Reference. Retrieved 2015-06-06.
  5. ^ "C++ Applications". PostgreSQL. The PostgreSQL Global Development Group. Retrieved 2018-01-23.

외부 링크