Postgresql 9.1.24 Tài liệu | ||||
---|---|---|---|---|
prev | UP | Chương 33.ECPG- nhúngSQLtrong C | NEXT |
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.
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ênV1vàV2và 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
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ì
Bây giờ bạn sẽ có thể truyền dữ liệu được tạo bởiChọnvàFetch. 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
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ênvàText, có thể đọc đượcDấu thời gianvàSố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 |
Để 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ưVarcharvàText,,
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)vàlenlà khác nhau, ngắn hơn
Varcharcó thể được viết ở phía trên hoặc
charvàVarcharBiến máy chủ cũng có thể giữ kèo chấp bóng đá hôm nay giá trị của
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.
Đâ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.
Xử lýKhoảngLoạiDấu thời gianvàngà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
Xử lýSốvà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ốvàthập phânLoại
#include <stdio.h
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,
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
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;
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ố
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;
Phần này chứa thông tin về cách xử lý Nonscalar
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
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ểintvalvàTextVal,,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
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 ()
vàComplex_out ()
Chức năng trongPhần 35.11. Ví dụ sau đây(1,1)và(3,3)vàoAvàBvà 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)');
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_minchoint).