Postgresql 8.2.23 Tài liệu | ||||
---|---|---|---|---|
prev | Backward nhanh | Chương 31.ECPG- nhúngSQLtrong C | Chuyển tiếp nhanh | Tiếp theo |
inPhần 31.410636_11122tỷ lệ kèo bóng đá tối nay chủ. Trong một nhúng Chương trình SQL Chúng tôi coi tỷ lệ kèo bóng đá tối nay câu lệnh SQL làKháchTrong mã chương trình C làNgôn ngữ tỷ lệ kèo bóng đá tối nay chủ. Do đó tỷ lệ kèo bóng đá tối nay của chương trình C được gọi làMáy chủ tỷ lệ kèo bóng đá tối nay.
Chuyển dữ liệu giữa chương trình C và các câu lệnh SQL là Đặc biệt đơn giản trong SQL nhúng. Thay vì có lập trình dán dữ liệu vào tuyên bố, đòi hỏi tỷ lệ kèo bóng đá tối nay chứng khác nhau, chẳng hạn như trích dẫn đúng giá trị, bạn Có thể chỉ cần viết tên của một biến C vào SQL Tuyên bố, tiền tố bởi một đại tràng. Ví dụ:
EXEC SQL chèn vào tỷ lệ kèo bóng đá tối nay giá trị một số (: v1, 'foo',: v2);
Câu lệnh này đề cập đến hai tỷ lệ kèo bóng đá tối nay C có tênV1vàV2và cũng sử tỷ lệ kèo bóng đá tối nay 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ử tỷ lệ kèo bóng đá tối nay một loại dữ liệu hoặc loại khác.
Phong cách chèn c biến C trong tỷ lệ kèo bóng đá tối nay 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ố.
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, tỷ lệ kèo bóng đá tối nay 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
EXEC SQL End Declare phần;
Giữa tỷ lệ kèo bóng đá tối nay 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];
13254_13544
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à tỷ lệ kèo bóng đá tối nay 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. tỷ lệ kèo bóng đá tối nay 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ý tỷ lệ kèo bóng đá tối nay loại này vì nó không Biết định nghĩa.
14320_14481
Một vài ví dụ về tỷ lệ kèo bóng đá tối nay chủ:
Một trong những cách sử dụng phổ tỷ lệ kèo bóng đá tối nay 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 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 tỷ lệ kèo bóng đá tối nay 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.
Sử tỷ lệ kèo bóng đá tối naytypedefTừ khóa đến ánh xạ tỷ lệ kèo bóng đá tối nay loại mới thành tỷ lệ kèo bóng đá tối nay 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ử tỷ lệ kèo bóng đá tối 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ố phần.
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 tỷ lệ kèo bóng đá tối nay của các truy vấn không có phân bổ tự động. Nhìn thấyPhần 31.10cho Thêm thông tin về phân bổ tự động.
EXEC SQL BẮT ĐẦU phần khai báo; int *intp; char ** charp; Exec sql end decare phần;
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, TimestampvàKhoảngTYPE.Phần 31.8Chứa tỷ lệ kèo bóng đá tối nay chức năng cơ bản để đối phó với tỷ lệ kèo bóng đá tối nay 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 tỷ lệ kèo bóng đá tối nay. 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.
Bây giờ bạn sẽ có thể truyền dữ liệu được tạo bởi lập trình vào một lệnh SQL. Nhưng làm thế nào để bạn lấy lại Kết quả của một truy vấn? Với mục đích đó, SQL nhúng cung cấp tỷ lệ kèo bóng đá tối nay thể đặc biệt của các lệnh thông thườngChọnvàFetch. Những cái này tỷ lệ kèo bóng đá tối nay lệnh có một đặc biệtthànhmệnh đề chỉ định tỷ lệ kèo bóng đá tối nay 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;
SO18401_18407mệ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ành18598_18649
Đây là một ví dụ sử tỷ lệ kèo bóng đá tối nay 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ả tỷ lệ kèo bóng đá tối nay mệnh đề bình thường.
19121_19334
tỷ lệ kèo bóng đá tối nay ví dụ trên không xử lý tỷ lệ kèo bóng đá tối nay giá trị null. Trong thực tế, tỷ lệ kèo bóng đá tối nay 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 tỷ lệ kèo bóng đá tối nay giá trị null cho cơ sở dữ liệu hoặc truy xuất tỷ lệ kèo bóng đá tối nay 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 tỷ lệ kèo bóng đá tối nay giá trị null một cách chính xác:
EXEC SQL bắt đầu khai báo; Varchar val; int val_ind; EXEC SQL END TUYÊN BỐ TUYÊN BỐ: ... EXEC SQL Chọn B vào: val: val_ind từ test1;
tỷ lệ kèo bóng đá tối nay 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 tỷ lệ kèo bóng đá tối nay chủ.