Phiên bản được hỗ trợ:hiện tại(17) /16 / 15 / 14 / 13
Phiên bản phát triển:18 / 5119_5126
Phiên bản không được hỗ trợ:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3
Tài liệu này dành cho phiên bản không được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng một trang chohiện tạiPhiên bản hoặc một trong kèo bóng đá cúp c2 phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

32.6. Sử dụng kèo bóng đá cúp c2 chủ

inPhần 32.4Bạn đã thấy cách Bạn có thể thực hiện kèo bóng đá cúp c2 câu lệnh SQL từ một chương trình SQL nhúng. Một số trong số kèo bóng đá cúp c2 câu lệnh chỉ được sử dụng kèo bóng đá cúp c2 giá trị cố định và không cung cấp cách chèn kèo bóng đá cúp c2 giá trị do người dùng cung cấp vào kèo bóng đá cúp c2 câu lệnh hoặc có Chương trình xử lý kèo bóng đá cúp c2 giá trị được trả về bởi truy vấn. Những loại đó kèo bóng đá cúp c2 tuyên bố không thực sự hữu ích trong kèo bóng đá cúp c2 ứng dụng thực sự. Cái này Phần giải thích chi tiết về cách bạn có thể truyền dữ liệu giữa c của bạn chương trình và kèo bóng đá cúp c2 câu lệnh SQL nhúng bằng cơ chế đơn giản gọi điệnkèo bóng đá cúp c2 chủ. Trong một nhúng Chương trình SQL Chúng tôi coi kèo bóng đá cúp c2 câu lệnh SQL làKháchTrong mã chương trình C làNgôn ngữ máy chủ. Do đó kèo bóng đá cúp c2 của chương trình C được gọi làMáy chủ kèo bóng đá cúp c2.

32.6.1. Tổng quan

11556_11917

EXEC SQL chèn vào kèo bóng đá cúp c2 giá trị một số (: v1, 'foo',: v2);

Câu lệnh này đề cập đến hai kèo bóng đá cúp c2 C có tênV1V2và cũng sử dụng một chuỗi SQL thông thường theo nghĩa đen, để minh họa rằng bạn không bị hạn chế sử dụng một loại dữ liệu hoặc loại khác.

Phong cách chèn c biến C trong kèo bóng đá cúp c2 câu lệnh SQL hoạt động Bất cứ nơi nào một biểu thức giá trị được mong đợi trong SQL tuyên bố.

32.6.2. Khai báo phần

Ví dụ, chuyển dữ liệu từ chương trình sang cơ sở dữ liệu dưới dạng các tham số trong truy vấn hoặc để truyền dữ liệu từ cơ sở dữ liệu Quay lại chương trình, kèo bóng đá cúp c2 C được dự định chứa dữ liệu này cần được khai báo đặc biệt các phần, vì vậy bộ tiền xử lý SQL nhúng được biết đến họ.

Phần này bắt đầu bằng:

EXEC SQL BẮT ĐẦU TUYỆT VỜI;

và kết thúc bằng:

Phần khai báo cuối SQL;

Giữa kèo bóng đá cúp c2 dòng đó, phải có biến C bình thường Tuyên bố, chẳng hạn như:

int x = 4;
char foo [16], thanh [16];

13257_13547

EXEC SQL INT I = 4;

Bạn có thể có nhiều phần khai báo trong một chương trình như bạn giống.

Các khai báo cũng được lặp lại với tệp đầu ra là kèo bóng đá cúp c2 C bình thường, vì vậy không cần phải khai báo chúng một lần nữa. kèo bóng đá cúp c2 không được sử dụng trong các lệnh SQL có thể được khai báo bình thường bên ngoài các phần đặc biệt này.

Định nghĩa về cấu trúc hoặc liên kết cũng phải được liệt kê Bên trong Akhai báoPhần. Nếu không thì Bộ tiền xử lý không thể xử lý kèo bóng đá cúp c2 loại này vì nó không Biết định nghĩa.

32.6.3. kèo bóng đá cúp c2 loại biến máy chủ khác nhau

Là một biến máy chủ, bạn cũng có thể sử dụng mảng, typedefs, Cấu trúc và con trỏ. Hơn nữa, có những loại máy chủ đặc biệt kèo bóng đá cúp c2 chỉ tồn tại trong ECPG.

Một vài ví dụ về kèo bóng đá cúp c2 chủ:

mảng

Một trong những cách sử dụng phổ kèo bóng đá cúp c2 nhất của khai báo mảng là Có lẽ là phân bổ một mảng char như trong:

EXEC SQL BẮT ĐẦU phần khai báo;
    char str [50];
Exec sql end decare phần;

Lưu ý rằng bạn phải chăm sóc độ dài cho bản thân bạn. Nếu bạn sử dụng kèo bóng đá cúp c2 chủ này làm mục tiêu Biến một truy vấn trả về một chuỗi với nhiều hơn 49 ký tự, xảy ra tràn bộ đệm.

typedefs

Sử dụngtypedefTừ khóa đến ánh xạ kèo bóng đá cúp c2 loại mới thành kèo bóng đá cúp c2 loại đã có.

EXEC SQL bắt đầu phần khai báo;
    typedef char mychartype [40];
    typedef dài serial_t;
Exec sql end decare phần;

Lưu ý rằng bạn cũng có thể sử dụng:

EXEC SQL Loại serial_t dài;

15603_15678

Con trỏ

Bạn có thể khai báo con trỏ đến các loại phổ biến nhất. Tuy nhiên, lưu ý rằng bạn không thể sử dụng con trỏ làm mục tiêu kèo bóng đá cúp c2 của các truy vấn không có phân bổ tự động. Nhìn thấyPhần 32.10cho Thêm thông tin về phân bổ tự động.

EXEC SQL bắt đầu khai báo;
    int *intp;
    char ** charp;
Exec sql end decare phần;
kèo bóng đá cúp c2 loại biến đặc biệt

ECPG chứa một số loại đặc biệt giúp bạn Tương tác dễ dàng với dữ liệu từ SQL Server. Vì Ví dụ nó đã triển khai hỗ trợ choVarchar, Số, ngày, TimestampKhoảngloại.Phần 32.8Chứa kèo bóng đá cúp c2 chức năng cơ bản để đối phó với kèo bóng đá cúp c2 loại đó, như vậy rằng bạn không cần gửi truy vấn đến máy chủ SQL Chỉ để thêm một khoảng thời gian vào dấu thời gian cho ví dụ.

Loại đặc biệtVarcharIS được chuyển đổi thành một cái tênstructcho Mỗi kèo bóng đá cúp c2. Một tuyên bố như:

Varchar var [180];

được chuyển đổi thành:

struct varchar_var int len; Char Arr [180];  var;

Cấu trúc này phù hợp để giao tiếp với SQL Datums thuộc loạiVarchar.

32.6.4.Chọn vàotìm nạp vào

17633_17857ChọnFetch. Những cái này kèo bóng đá cúp c2 lệnh có một đặc biệtthànhmệnh đề chỉ định kèo bóng đá cúp c2 chủ nào các giá trị được truy xuất được lưu trữ trong.

Đây là một ví dụ:

/*
 * Giả sử bảng này:
 * Tạo Bảng Test1 (A Int, B Varchar (50));
 */

EXEC SQL bắt đầu phần khai báo;
int v1;
Varchar v2;
EXEC SQL END TUYÊN BỐ TUYÊN BỐ;

 ...

EXEC SQL Chọn a, b vào: v1,: v2 từ kiểm tra;

SOthànhmệnh đề xuất hiện giữa Danh sách chọn vàtừmệnh đề. Số lượng phần tử trong danh sách chọn và danh sách sauthành(còn được gọi là danh sách đích) Phải bằng.

Đây là một ví dụ sử dụng lệnhFetch:

EXEC SQL bắt đầu khai báo;
int v1;
Varchar v2;
EXEC SQL END TUYÊN BỐ TUYÊN BỐ;

 ...

EXEC SQL khai báo con trỏ foo cho chọn a, b từ thử nghiệm;

 ...

LÀM 
    ...
    EXEC SQL tìm nạp tiếp theo từ foo thành: v1,: v2;
    ...
 trong khi (...);

ở đâythànhmệnh đề xuất hiện sau tất cả kèo bóng đá cúp c2 mệnh đề bình thường.

Cả hai phương pháp này chỉ cho phép truy xuất một hàng tại A thời gian. Nếu bạn cần xử lý kèo bóng đá cúp c2 bộ kết quả có khả năng chứa nhiều hơn một hàng, bạn cần sử dụng con trỏ, như được hiển thị Trong ví dụ thứ hai.

32.6.5. Chỉ báo

kèo bóng đá cúp c2 ví dụ trên không xử lý kèo bóng đá cúp c2 giá trị null. Trong thực tế, kèo bóng đá cúp c2 ví dụ truy xuất sẽ gây ra lỗi nếu họ tìm nạp một null Giá trị từ cơ sở dữ liệu. Để có thể chuyển kèo bóng đá cúp c2 giá trị null cho cơ sở dữ liệu hoặc truy xuất kèo bóng đá cúp c2 giá trị null từ cơ sở dữ liệu, bạn cần nối một đặc điểm kỹ thuật của máy chủ thứ hai vào từng máy chủ Biến chứa dữ liệu. Biến máy chủ thứ hai này là được gọi làChỉ báovà chứa a cờ cho biết liệu dữ liệu có phải là null hay không, trong trường hợp đó Giá trị của biến máy chủ thực bị bỏ qua. Đây là một ví dụ Điều đó xử lý đúng kèo bóng đá cúp c2 giá trị null một cách chính xác:

20141_20288

kèo bóng đá cúp c2 chỉ báoVal_indWill bằng không nếu giá trị không phải là null và nó sẽ âm nếu giá trị là null.

Chỉ báo có chức năng khác: Nếu giá trị chỉ báo là tích cực, nó có nghĩa là giá trị không phải là vô giá trị, nhưng nó là cắt ngắn khi nó được lưu trữ trong kèo bóng đá cúp c2 chủ.