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 / Devel
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 chấp bóng đá hôm nay nay phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

33.4. Sử dụng kèo chấp bóng đá hôm nay chủ

inPhần 33.3Bạn đã thấy cáchkèo chấp bóng đá hôm nay chủ. Trong một nhúngKháchTrong mã chương trình C làNgôn ngữ máy chủ. Do đó kèo chấp bóng đá hôm nayMáy chủ.

Một cách khác để trao đổi giá trị giữa kèo chấp bóng đá hôm nay phụ trợ PostgreSQL vàPhần 33.7.

33.4.1. Tổng quan

Truyền dữ liệu giữa chương trình C và kèo chấp bóng đá hôm nay câu lệnh SQL là

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

Câu lệnh này đề cập đến hai kèo chấp bóng đá hôm nay C có tênV1V2và cũng kèo chấp bóng đá hôm nay

Phong cách chèn c biến C trong kèo chấp bóng đá hôm nay câu lệnh SQL hoạt động

33.4.2. Khai báo phần

Ví dụ, chuyển dữ liệu từ chương trình sang cơ sở dữ liệu

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

EXEC SQL BẮT ĐẦU phần khai báo;

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

phần khai báo kết thúc SQL;

Giữa kèo chấp bóng đá hôm nay dòng đó, phải có biến C bình thường

int x = 4;

Như bạn có thể thấy, bạn có thể chỉ định giá trị ban đầu

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

kèo chấp bóng đá hôm nay khai báo cũng được lặp lại với tệp đầu ra là

Định nghĩa về cấu trúc hoặc liên kết cũng phải được liệt kêkhai báoPhần. Nếu không thì

33.4.3. Truy xuất kết quả truy vấn

Bây giờ bạn sẽ có thể truyền dữ liệu được tạo bởiChọnFetch. Những cái nàythànhmệnh đềChọnđược kèo chấp bóng đá hôm nay cho mộtFetchđược kèo chấp bóng đá hôm nay cho một truy vấn trả về nhiều

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

/*

Vì vậy,thànhmệnh đề xuất hiện giữatừmệnh đề.thành(còn được gọi là danh sách đích)

Đây là một ví dụ kèo chấp bóng đá hôm nay lệnhFetch:

EXEC SQL bắt đầu khai báo;

ở đâythànhmệnh đề xuất hiện sau

33.4.4. Nhập ánh xạ

Khi kèo chấp bóng đá hôm nay ứng dụng ECPG trao đổi giá trị giữa

Về mặt này, có hai loại dữ liệu: một sốSố nguyênText, có thể đọc đượcDấu thời gianSốChỉ có thể được truy cập thông qua đặc biệtPhần.

Bảnghiển thị kèo chấp bóng đá hôm nay loại dữ liệu PostgreSQL tương ứng với đó

Bảng 33-1. Ánh xạ giữa dữ liệu PostgreSQL

Loại dữ liệu PostgreSQL Loại kèo chấp bóng đá hôm nay chủ
SmallInt ngắn
Số nguyên int
Bigint dài int
thập phân thập phân[A]
Số Số[A]
Real float
Double Precision Double
sê -ri int
BigSerial Long Int dài
oid unsign int
Nhân vật (n), Varchar (n), Text char [n+1], Varchar [n+1][B]
tên char [tên được đặt tên]
Dấu thời gian Dấu thời gian[A]
Khoảng Khoảng[A]
ngày ngày[A]
Boolean bool[C]
ghi chú:
a.Loại này chỉ có thểPhần.
b.Tuyên bốEcpglib.h
c.Tuyên bốecpglib.hNếu không

33.4.4.1. Xử lý chuỗi ký tự

Để xử lý kèo chấp bóng đá hôm nay loại dữ liệu chuỗi ký tự SQL, chẳng hạn nhưVarcharText,,

Một cách đang kèo chấp bóng đá hôm naychar [], một mảngChar, đó là cách phổ kèo chấp bóng đá hôm nay nhất để

EXEC SQL bắt đầu khai báo;

Lưu ý rằng bạn phải tự mình chăm sóc độ dài. Nếu như

Cách khác đang kèo chấp bóng đá hôm nayVarcharLoại, là loại đặc biệt được cung cấp bởi ECPG. kèo chấp bóng đá hôm nayVarcharđược chuyển đổi thành một cái tênstructcho

Varchar var [180];

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

struct varchar_var int len; Char Arr [180];

Thành viênmảngMáy chủ lưu trữVarcharkèo chấp bóng đá hôm nay chủ, ThelenGiữ độ dài của chuỗi được lưu trữmảngKhông cóstrlen (mảng)lenlà khác nhau, ngắn hơn

Varcharcó thể được viết ở phía trên hoặc

charVarcharBiến máy chủ cũng có thể giữ kèo chấp bóng đá hôm nay giá trị của

33.4.4.2. Truy cập dữ liệu đặc biệt

ECPG chứa một số loại đặc biệt giúp bạn tương tácSố, thập phân, ngày, Dấu thời gian,,KhoảngLoại. Những loại dữ liệu nàyint, dàihoặcchar []), vì chúngPhần 33.6Chứa kèo chấp bóng đá hôm nay chức năng cơ bản

kèo chấp bóng đá hôm nay tiểu mục sau mô tả kèo chấp bóng đá hôm nay loại dữ liệu đặc biệt này.Phần 33.6.

33.4.4.2.1. Dấu thời gian, ngày

Đây là một mẫu để xử lýDấu thời giankèo chấp bóng đá hôm nay trong máy chủ ECPG

Đầu tiên, chương trình phải bao gồm tệp tiêu đề choDấu thời gianloại:

#include <pgtypes_timestamp.h

Tiếp theo, khai báo kèo chấp bóng đá hôm nay chủ dưới dạng loạiDấu thời gianTrong phần khai báo:

EXEC SQL BẮT ĐẦU phần khai báo;

Và sau khi đọc một giá trị vào kèo chấp bóng đá hôm nay chủ,dấu thời gianGiá trị làpgtypestimestamp_to_asc ()Hàm:

EXEC SQL CHỌN NGAY BÂY GIỜ () :: Dấu thời gian vào: TS;

Ví dụ này sẽ hiển thị một số kết quả như sau:

TS = 2010-06-27 18: 03: 56.949343

Ngoài ra, loại ngày có thể được xử lý trong cùng mộtpgtypes_date.h, khai báo kèo chấp bóng đá hôm nay chủ làpgtypesdate_to_asc ()Hàm. Để biết thêm chi tiết về thư viện PGTYPESPhần.

33.4.4.2.2. khoảng

Xử lýKhoảngLoạiDấu thời gianngàyLoại. Nó được yêu cầu, tuy nhiên,KhoảngLoại giá trị rõ ràng. Nói cách khác, không gian bộ nhớ cho

Đây là một chương trình ví dụ:

#include <stdio.h

33.4.4.2.3. số,

Xử lýSốthập phânkèo chấp bóng đá hôm nay loại tương tự nhưKhoảngLoại: nó yêu cầu xác định mộtPhần 33.6.

Không có chức năng nào được cung cấp cụ thể chothập phânLoại. Một ứng dụng phảiSốkèo chấp bóng đá hôm nay

Đây là một ví dụ về xử lý chương trìnhSốthập phânLoại

#include <stdio.h

33.4.4.3. kèo chấp bóng đá hôm nay chủ với

Là một kèo chấp bóng đá hôm nay chủ, bạn cũng có thể sử dụng mảng, typedefs,

33.4.4.3.1. Mảng

Có hai trường hợp sử dụng cho kèo chấp bóng đá hôm nay mảng làm biến máy chủ.char []hoặcVarchar [], nhưPhần. Trường hợp kèo chấp bóng đá hôm nay thứ hai là truy xuất nhiềuFetchlệnh. Nhưng với máy chủ mảng

Ví dụ sau quétpg_databaseBảng hệ thống và hiển thị tất cả kèo chấp bóng đá hôm nay OIDS

int

Ví dụ này hiển thị kết quả sau. (kèo chấp bóng đá hôm nay giá trị chính xác

oid = 1, dbname = template1

33.4.4.3.2. Cấu trúc

Một cấu trúc có tên thành viên khớp với tên cột của

Ví dụ sau lấy OIDS, tên và kích cỡpg_databaseBảng hệ thống và kèo chấp bóng đá hôm naypg_database_size ()Hàm.dbinfo_tVới kèo chấp bóng đá hôm nay thành viên có tên khớp với mỗiChọnKết quả làFetchcâu lệnh.

EXEC SQL bắt đầu khai báo;

Ví dụ này hiển thị kết quả sau. (kèo chấp bóng đá hôm nay giá trị chính xác

oid = 1, datName = template1, size = 4324580

kèo chấp bóng đá hôm nay chủ cấu trúc"hấp thụ"nhiều cột như cấu trúc nhưsizekèo chấp bóng đá hôm nay bên ngoài cấu trúc:

EXEC SQL bắt đầu phần khai báo;

33.4.4.3.3. Typedefs

kèo chấp bóng đá hôm naytypedefTừ khóa để bản đồ

EXEC SQL BẮT ĐẦU phần khai báo;

Lưu ý rằng bạn cũng có thể kèo chấp bóng đá hôm nay:

EXEC SQL Loại serial_t dài;

Tuyên bố này không cần phải là một phần của tuyên bố

33.4.4.3.4. Con trỏ

Bạn có thể khai báo con trỏ đến kèo chấp bóng đá hôm nay loại phổ biến nhất. Ghi chúPhần 33.7Để biết thêm

EXEC SQL bắt đầu phần khai báo;

33.4.5. Xử lý không hợp lý

Phần này chứa thông tin về cách xử lý Nonscalar

33.4.5.1.

Mảng cấp độ SQL đa chiều không trực tiếp

Nếu truy vấn truy cậpElementscủa một mảngSố nguyên, một kèo chấp bóng đá hôm nay chủ của loạiintcó thể được kèo chấp bóng đá hôm nay. Ngoài ra nếu phần tửVarcharhoặcText, một kèo chấp bóng đá hôm nay chủ của loạichar []hoặcVarchar []có thể

Đây là một ví dụ. Giả sử bảng sau:

Tạo bảng T3 (

Chương trình ví dụ sau lấy phần tử thứ 4 củaint:

EXEC SQL bắt đầu phần khai báo;

Ví dụ này hiển thị kết quả sau:

ii = 4

Để ánh xạ nhiều phần tử mảng đến nhiều phần tử trong

EXEC SQL BẮT ĐẦU phần khai báo;

Lưu ý lại rằng

EXEC SQL BẮT ĐẦU phần khai báo;

sẽ không hoạt động chính xác trong trường hợp này, vì bạn không thể

Một cách giải quyết khác là lưu trữ kèo chấp bóng đá hôm nay mảng trong bên ngoài của họchar []hoặcVarchar []. VìPhần 8.14.2. Lưu ý rằng điều này

33.4.5.2.

kèo chấp bóng đá hôm nay loại tổng hợp không được hỗ trợ trực tiếp trong ECPG, mà là một

Đối với kèo chấp bóng đá hôm nay ví dụ sau, giả sử loại sau và

Tạo loại comp_t AS (Intval Integer, TextVal Varchar (32));

Giải pháp rõ ràng nhất là truy cập từng thuộc tínhcomp_triêng biệt:

EXEC SQL bắt đầu phần khai báo;

Để tăng cường ví dụ này, kèo chấp bóng đá hôm nay chủ để lưu trữFetchCó thểPhần. Để chuyển sang cấu trúc, ví dụ có thểintvalTextVal,,comp_tCấu trúc và cấu trúc được chỉ định trênFetchlệnh.

EXEC SQL BẮT ĐẦU phần khai báo;

Mặc dù cấu trúc được kèo chấp bóng đá hôm nay trongFetchLệnh, tên thuộc tính trongChọnmệnh đề được chỉ định một bởi*Để yêu cầu tất cả kèo chấp bóng đá hôm nay thuộc tính của tổng hợp

...

theo cách này, kèo chấp bóng đá hôm nay loại tổng hợp có thể được ánh xạ vào kèo chấp bóng đá hôm nay cấu trúc

Cuối cùng, cũng có thể lưu trữ loại tổng hợpchar []hoặcVarchar []. Nhưng theo cách đó, nó không dễ dàng

33.4.5.3.

kèo chấp bóng đá hôm nay loại cơ sở do người dùng xác định mới không được hỗ trợ trực tiếp bởichar []hoặcVarchar [], và giải pháp này thực sự là

Đây là một ví dụ kèo chấp bóng đá hôm nay kiểu dữ liệuphức tạpTừ ví dụ trongPhần 35.11. Chuỗi bên ngoài(%lf,%lf), được xác định trong kèo chấp bóng đá hôm nay chức năngphức tạp_in ()Complex_out ()Chức năng trongPhần 35.11. Ví dụ sau đây(1,1)(3,3)vàoABvà chọn chúng từ bảng sau

EXEC SQL BẮT ĐẦU phần khai báo;

Ví dụ này hiển thị kết quả sau:

a = (1,1), b = (3,3)

Một cách giải quyết khác đang tránh kèo chấp bóng đá hôm nay trực tiếp

Ví dụ:

Tạo chức năng create_complex (r Double, I Double) Trả về phức tạp

Sau định nghĩa này, sau đây

EXEC SQL bắt đầu phần khai báo;

có tác dụng tương tự như

EXEC SQL chèn vào kèo chấp bóng đá hôm nay giá trị test_complex ('(1,2)', '(3,4)');

33.4.6. Chỉ báo

kèo chấp bóng đá hôm nay ví dụ trên không xử lý kèo chấp bóng đá hôm nay giá trị null. Trong thực tế,Chỉ báovà chứa a

EXEC SQL bắt đầu khai báo;

kèo chấp bóng đá hôm nay chỉ báoVal_indWill

Chỉ báo có chức năng khác: Nếu giá trị chỉ báo

Nếu đối số-R no_indicatorISECPG, Nó"Không chỉ nội"chế độ. TRONGint_min​​choint).