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 tỷ lệ kèo bóng đá trực tuyến hôm nay phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

33.4. Sử dụng tỷ lệ kèo bóng đá trực tuyến hôm nay biến máy chủ

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

11281_11408Phần 33.7.

33.4.1. Tổng quan

Truyền dữ liệu giữa chương trình C và tỷ lệ kèo bóng đá trực tuyến hôm nay câu lệnh SQL đặc biệt đơn giản trong SQL nhúng. Thay vì để chương trình dán dữ liệu vào câu lệnh, đòi hỏi tỷ lệ kèo bóng đá trực tuyến hôm nay biến chứng khác nhau, chẳng hạn như trích dẫn đúng giá trị, bạn chỉ có thể viết tên của biến C vào câu lệnh SQL, được đặt trước bởi một dấu hai chấm. Ví dụ:

11962_12020

Câu lệnh này đề cập đến hai biến C có tênV1V2Và cũng sử dụng một chuỗi tỷ lệ kèo bóng đá trực tuyến hôm nay 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.

12266_12388

33.4.2. Khai báo phần

Để chuyển dữ liệu từ chương trình sang cơ sở dữ liệu, ví dụ như tỷ lệ kèo bóng đá trực tuyến hôm nay tham số trong truy vấn hoặc chuyển dữ liệu từ cơ sở dữ liệu trở lại chương trình, tỷ lệ kèo bóng đá trực tuyến hôm nay biến C dự định chứa dữ liệu này cần được khai báo trong tỷ lệ kèo bóng đá trực tuyến hôm nay phần được đánh dấu đặc biệt, do đó

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

EXEC tỷ lệ kèo bóng đá trực tuyến hôm nay BẮT ĐẦU TUYỆT VỜI;

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

EXEC tỷ lệ kèo bóng đá trực tuyến hôm nay END TUYỆT VỜI;

Giữa tỷ lệ kèo bóng đá trực tuyến hôm nay dòng đó, phải có tỷ lệ kèo bóng đá trực tuyến hôm nay khai báo biến C bình thường, chẳng hạn như:

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

Như bạn có thể thấy, bạn có thể tùy ý gán một giá trị ban đầu cho biến. Phạm vi của biến được xác định bởi vị trí của phần khai báo trong chương trình. Bạn cũng có thể khai báo tỷ lệ kèo bóng đá trực tuyến hôm nay biến với cú pháp sau đây để tạo ra phần khai báo:

EXEC tỷ lệ kèo bóng đá trực tuyến hôm nay INT I = 4;

Bạn có thể có bao nhiêu phần khai báo trong một chương trình tùy thích.

tỷ lệ kèo bóng đá trực tuyến hôm nay khai báo cũng được lặp lại với tệp đầu ra dưới dạng tỷ lệ kèo bóng đá trực tuyến hôm nay biến C bình thường, do đó không cần phải khai báo chúng một lần nữa. tỷ lệ kèo bóng đá trực tuyến hôm nay biến không được sử dụng trong tỷ lệ kèo bóng đá trực tuyến hôm nay lệnh SQL có thể được khai báo bình thường bên ngoài tỷ lệ kèo bóng đá trực tuyến hôm nay 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 đá trực tuyến hôm nay loại này vì nó không biết định nghĩa.

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ởi chương trình của bạn vào 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 đá trực tuyến hôm nay biến thể đặc biệt của tỷ lệ kèo bóng đá trực tuyến hôm nay lệnh thông thườngChọnFetch. tỷ lệ kèo bóng đá trực tuyến hôm nay lệnh này có một đặc biệtthànhmệnh đề chỉ định tỷ lệ kèo bóng đá trực tuyến hôm nay biến máy chủ nào mà tỷ lệ kèo bóng đá trực tuyến hôm nay giá trị được truy xuất sẽ được lưu trữ trong.Chọnđược sử dụng cho một truy vấn chỉ trả về hàng đơn vàFetchđược sử dụng cho một truy vấn trả về nhiều hàng, sử dụng con trỏ.

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

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

EXEC tỷ lệ kèo bóng đá trực tuyến hôm nay bắt đầu phần khai báo;
int v1;
Varchar v2;
EXEC tỷ lệ kèo bóng đá trực tuyến hôm nay END TUYÊN BỐ TUYÊN BỐ;

 ...

EXEC tỷ lệ kèo bóng đá trực tuyến hôm nay 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 gọi là danh sách đích) phải bằng nhau.

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

EXEC tỷ lệ kèo bóng đá trực tuyến hôm nay bắt đầu khai báo;
int v1;
Varchar v2;
EXEC tỷ lệ kèo bóng đá trực tuyến hôm nay END TUYÊN BỐ TUYÊN BỐ;

 ...

EXEC tỷ lệ kèo bóng đá trực tuyến hôm nay khai báo con trỏ foo cho chọn a, b từ thử nghiệm;

 ...

LÀM

    ...
    EXEC tỷ lệ kèo bóng đá trực tuyến hôm nay 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 đá trực tuyến hôm nay mệnh đề bình thường.

33.4.4. Nhập ánh xạ

Khi tỷ lệ kèo bóng đá trực tuyến hôm nay ứng dụng ECPG trao đổi giá trị giữa máy chủ PostgreSQL và ứng dụng C, chẳng hạn như khi truy xuất kết quả truy vấn từ máy chủ hoặc thực hiện tỷ lệ kèo bóng đá trực tuyến hôm nay câu lệnh SQL với tỷ lệ kèo bóng đá trực tuyến hôm nay tham số đầu vào, tỷ lệ kèo bóng đá trực tuyến hôm nay giá trị cần được chuyển đổi giữa tỷ lệ kèo bóng đá trực tuyến hôm nay loại dữ liệu PostgreSQL và tỷ lệ kèo bóng đá trực tuyến hôm nay loại thay đổi ngôn ngữ (loại dữ liệu C). Một trong những điểm chính của ECPG là nó tự động chăm sóc điều này trong hầu hết tỷ lệ kèo bóng đá trực tuyến hôm nay trường hợp.

Về mặt này, có hai loại dữ liệu: một số loại dữ liệu PostgreSQL đơn giản, chẳng hạn nhưSố nguyênText, có thể được đọc và viết trực tiếp bởi ứng dụng. tỷ lệ kèo bóng đá trực tuyến hôm nay loại dữ liệu PostgreSQL khác, chẳng hạn nhưTimestampSốChỉ có thể được truy cập thông qua tỷ lệ kèo bóng đá trực tuyến hôm nay chức năng thư viện đặc biệt; nhìn thấyPhần 33.4.4.2.

Bảng 33-1hiển thị tỷ lệ kèo bóng đá trực tuyến hôm nay loại dữ liệu PostgreSQL nào tương ứng với tỷ lệ kèo bóng đá trực tuyến hôm nay loại dữ liệu C. Khi bạn muốn gửi hoặc nhận giá trị của một loại dữ liệu PostgreSQL đã cho, bạn nên khai báo biến C của loại dữ liệu C tương ứng trong phần khai báo.

Bảng 33-1. Ánh xạ giữa tỷ lệ kèo bóng đá trực tuyến hôm nay loại dữ liệu PostgreSQL và tỷ lệ kèo bóng đá trực tuyến hôm nay loại biến C

Loại dữ liệu PostgreSQL Loại tỷ lệ kèo bóng đá trực tuyến 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
SmallSerial ngắn
sê -ri int
BigSerial dài int
OID unsign int
ký 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ể được truy cập thông qua tỷ lệ kèo bóng đá trực tuyến hôm nay chức năng thư viện đặc biệt; nhìn thấyPhần 33.4.4.2.
b.được khai báo trongEcpglib.h
c.được khai báo trongecpglib.hNếu không phải bản địa

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

Để xử lý tỷ lệ kèo bóng đá trực tuyến hôm nay loại dữ liệu chuỗi ký tự SQL, chẳng hạn nhưVarcharText, Có hai cách có thể để khai báo tỷ lệ kèo bóng đá trực tuyến hôm nay biến máy chủ.

Một cách đang sử dụngchar [], một mảngChar, là cách phổ biến nhất để xử lý dữ liệu ký tự trong C.

EXEC tỷ lệ kèo bóng đá trực tuyến hôm nay bắt đầu khai báo;
    char str [50];
Exec tỷ lệ kèo bóng đá trực tuyến hôm nay end decare phần;

Lưu ý rằng bạn phải tự chăm sóc chiều dài. Nếu bạn sử dụng tỷ lệ kèo bóng đá trực tuyến hôm nay chủ này làm biến mục tiêu của truy vấn trả về chuỗi có hơn 49 ký tự, sẽ xảy ra tràn bộ đệm.

Cách khác là sử dụngVarcharLoại, là loại đặc biệt được cung cấp bởi ECPG. Định nghĩa trên một mảng loạiVarcharđược chuyển đổi thành một cái tênstructĐối với mỗi biến. Một tuyên bố như:

Varchar var [180];

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

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

Thành viênmảngHosts chuỗi bao gồm một byte kết thúc bằng không. Do đó, để lưu trữ một chuỗi trong mộtVarchartỷ lệ kèo bóng đá trực tuyến hôm nay chủ, tỷ lệ kèo bóng đá trực tuyến hôm nay chủ phải được khai báo với độ dài bao gồm cả bộ kết thúc byte bằng 0. Thành viênlenGiữ độ dài của chuỗi được lưu trữ trongmảngKhông có byte kết thúc bằng không. Khi một tỷ lệ kèo bóng đá trực tuyến hôm nay chủ được sử dụng làm đầu vào cho truy vấn, nếustrlen (mảng)lenlà khác nhau, cái được sử dụng ngắn hơn.

Varcharcó thể được viết bằng chữ hoa hoặc chữ thường, nhưng không phải trong trường hợp hỗn hợp.

CharVarcharBiến máy chủ cũng có thể giữ tỷ lệ kèo bóng đá trực tuyến hôm nay giá trị của tỷ lệ kèo bóng đá trực tuyến hôm nay loại SQL khác, sẽ được lưu trữ trong tỷ lệ kèo bóng đá trực tuyến hôm nay biểu mẫu chuỗi của chúng.

33.4.4.2. Truy cập tỷ lệ kèo bóng đá trực tuyến hôm nay loại dữ liệu đặ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 một số loại dữ liệu đặc biệt từ máy chủ PostgreSQL. Cụ thể, nó đã triển khai hỗ trợ choSố, thập phân, ngày, dấu thời gianKhoảngLoại. tỷ lệ kèo bóng đá trực tuyến hôm nay loại dữ liệu này không thể được ánh xạ một cách hữu ích đến tỷ lệ kèo bóng đá trực tuyến hôm nay loại biến chủ nguyên thủy (chẳng hạn nhưint, dài inthoặcchar []), vì chúng có cấu trúc bên trong phức tạp. tỷ lệ kèo bóng đá trực tuyến hôm nay ứng dụng liên quan đến tỷ lệ kèo bóng đá trực tuyến hôm nay loại này bằng cách khai báo tỷ lệ kèo bóng đá trực tuyến hôm nay biến máy chủ theo tỷ lệ kèo bóng đá trực tuyến hôm nay loại đặc biệt và truy cập chúng bằng cách sử dụng tỷ lệ kèo bóng đá trực tuyến hôm nay chức năng trong thư viện PGTYPES. Thư viện PGTYPES, được mô tả chi tiết trongPhần 33.6Chứa tỷ lệ kèo bóng đá trực tuyến hôm nay chức năng cơ bản để xử lý tỷ lệ kèo bóng đá trực tuyến hôm nay loại đó, do đó bạn không cần phải 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.

tỷ lệ kèo bóng đá trực tuyến hôm nay tiểu mục sau mô tả tỷ lệ kèo bóng đá trực tuyến hôm nay loại dữ liệu đặc biệt này. Để biết thêm chi tiết về tỷ lệ kèo bóng đá trực tuyến hôm nay chức năng thư viện PGTYPES, xemPhầ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 gianBiến trong ứng dụng 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 tỷ lệ kèo bóng đá trực tuyến hôm nay chủ dưới dạng loạidấu thời gianTrong phần khai báo:

EXEC tỷ lệ kèo bóng đá trực tuyến hôm nay bắt đầu khai báo;
Dấu thời gian TS;
Exec tỷ lệ kèo bóng đá trực tuyến hôm nay end decare phần;

Và sau khi đọc một giá trị vào biến máy chủ, hãy xử lý nó bằng tỷ lệ kèo bóng đá trực tuyến hôm nay hàm thư viện PGTyPes. Trong ví dụ sau,Dấu thời gianGiá trị được chuyển đổi thành mẫu văn bản (ASCII) vớipgtypestimestamp_to_asc ()chức năng:

EXEC tỷ lệ kèo bóng đá trực tuyến hôm nay CHỌN NGAY BÂY GIỜ () :: Dấu thời gian vào: TS;

printf ("ts = %s \ n", pgtypestimestamp_to_asc (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ý theo cùng một cách. Chương trình phải bao gồmpgtypes_date.h, Khai báo tỷ lệ kèo bóng đá trực tuyến hôm nay chủ dưới dạng loại ngày và chuyển đổi giá trị ngày thành biểu mẫu văn bản bằng cách sử dụngpgtypesdate_to_asc ()Hàm. Để biết thêm chi tiết về tỷ lệ kèo bóng đá trực tuyến hôm nay chức năng thư viện PGTYPES, xemPhần 33.6.

33.4.4.2.2. khoảng

Xử lýKhoảngLoại cũng tương tự nhưDấu thời gianngàyLoại. Tuy nhiên, yêu cầu phân bổ bộ nhớ cho mộtKhoảng25595_25735

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

#include <stdio.h
#include <stdlib.h
#include <pgtypes_interval.h

int
Main (Void)

EXEC tỷ lệ kèo bóng đá trực tuyến hôm nay bắt đầu phần khai báo;
    khoảng *in;
EXEC tỷ lệ kèo bóng đá trực tuyến hôm nay END TUYÊN BỐ TUYÊN BỐ;

    EXEC tỷ lệ kèo bóng đá trực tuyến hôm nay Kết nối với TestDB;
    Exec tỷ lệ kèo bóng đá trực tuyến hôm nay chọn pg_catalog.set_config ('search_path', '', false); Exec tỷ lệ kèo bóng đá trực tuyến hôm nay cam kết;

    in = pgtyPesInterval_new ();
    Exec tỷ lệ kèo bóng đá trực tuyến hôm nay Chọn '1 phút' :: khoảng vào: in;
    printf ("khoảng = %s \ n", pgtypesInterval_to_asc (in));
    PgtypesInterval_free (in);

    Exec tỷ lệ kèo bóng đá trực tuyến hôm nay cam kết;
    EXEC tỷ lệ kèo bóng đá trực tuyến hôm nay Ngắt kết nối tất cả;
    trả lại 0;

33.4.4.2.3. Số, thập phân

Xử lýSốthập phântỷ lệ kèo bóng đá trực tuyến hôm nay loại tương tự nhưKhoảngLoại: Nó yêu cầu xác định một con trỏ, phân bổ một số không gian bộ nhớ trên đống và truy cập biến bằng tỷ lệ kèo bóng đá trực tuyến hôm nay hàm thư viện PGTYPES. Để biết thêm chi tiết về tỷ lệ kèo bóng đá trực tuyến hôm nay chức năng thư viện PGTYPES, xemPhầ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ải chuyển đổi nó thànhSốBiến sử dụng chức năng thư viện PGTYPES để thực hiện xử lý thêm.

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

27268_28459

33.4.4.3. tỷ lệ kèo bóng đá trực tuyến hôm nay biến máy chủ với tỷ lệ kèo bóng đá trực tuyến hôm nay loại không nguyên tố

28651_28729

33.4.4.3.1. Mảng

Có hai trường hợp sử dụng cho tỷ lệ kèo bóng đá trực tuyến hôm nay mảng làm biến máy chủ. Đầu tiên là một cách để lưu trữ một số chuỗi văn bản trongchar []hoặcVarchar [], như được giải thích trongPhần 33.4.4.1. Trường hợp sử dụng thứ hai là lấy nhiều hàng từ kết quả truy vấn mà không cần sử dụng con trỏ. Không có một mảng, để xử lý kết quả truy vấn bao gồm nhiều hàng, cần phải sử dụng con trỏ vàFetch29340_29546

Ví dụ sau quétpg_databaseBảng hệ thống và hiển thị tất cả tỷ lệ kèo bóng đá trực tuyến hôm nay OID và tên của cơ sở dữ liệu có sẵn:

29719_30337

Ví dụ này hiển thị kết quả sau. (tỷ lệ kèo bóng đá trực tuyến hôm nay giá trị chính xác phụ thuộc vào hoàn cảnh cục bộ.)

oid = 1, dbname = template1
oid = 11510, dbname = template0
oid = 11511, dbname = postgres
oid = 313780, dbname = testDb
oid = 0, dbname =
oid = 0, dbname =
oid = 0, dbname =

33.4.4.3.2. Cấu trúc

30750_30955

Ví dụ sau lấy OIDS, tên và kích thước của cơ sở dữ liệu có sẵn từpg_databaseBảng hệ thống và sử dụngpg_database_size ()Hàm. Trong ví dụ này, một biến cấu trúcdbinfo_tVới tỷ lệ kèo bóng đá trực tuyến hôm nay thành viên có tên khớp với từng cột trongChọnKết quả được sử dụng để truy xuất một hàng kết quả mà không đặt nhiều tỷ lệ kèo bóng đá trực tuyến hôm nay chủ vàoFetchcâu lệnh.

31492_32263

Ví dụ này hiển thị kết quả sau. (tỷ lệ kèo bóng đá trực tuyến hôm nay giá trị chính xác phụ thuộc vào hoàn cảnh cục bộ.)

oid = 1, datName = template1, size = 4324580
oid = 11510, datName = template0, size = 4243460
oid = 11511, datName = postgres, size = 4324580
oid = 313780, datName = testDb, size = 8183012

tỷ lệ kèo bóng đá trực tuyến hôm nay chủ cấu trúc"hấp thụ"32616_32801sizeBiến bên ngoài cấu trúc:

EXEC SQL bắt đầu phần khai báo;
    Cấu trúc typedef

       int oid;
       DatName char [65];
     dbinfo_t;

    dbinfo_t dbval;
    Kích thước int dài dài;
EXEC SQL END TUYÊN BỐ TUYÊN BỐ;

    memset (& dbval, 0, sizeof (dbinfo_t));

    EXEC SQL Tuyên bố con trỏ Cur1 cho chọn OID, DATNAME, PG_DATABASE_SIZE (OID) làm kích thước từ pg_database;
    EXEC SQL MỞ CUR1;

    / * Khi kết quả kết quả đã đạt được, thoát ra trong khi vòng lặp */
    EXEC SQL Bất cứ khi nào không tìm thấy bị phá vỡ;

    while (1)

        /* Tìm nạp nhiều cột vào một cấu trúc. */
        EXEC SQL tìm nạp từ Cur1 thành: dbval,: kích thước;

        /* In tỷ lệ kèo bóng đá trực tuyến hôm nay thành viên của cấu trúc. */
        printf ("oid =%d, datName =%s, size =%lld \ n", dbval.oid, dbval.datname, size);

    EXEC SQL Đóng Cur1;

33.4.4.3.3. Typedefs

Sử dụngtypedefTừ khóa để ánh xạ tỷ lệ kèo bóng đá trực tuyến hôm nay loại mới thành tỷ lệ kèo bóng đá trực tuyến hôm nay loại đã có.

33902_34025

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

EXEC tỷ lệ kèo bóng đá trực tuyến hôm nay Loại serial_t dài;

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

33.4.4.3.4. Con trỏ

Bạn có thể khai báo con trỏ cho tỷ lệ kèo bóng đá trực tuyến hôm nay 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 biến mục tiêu của tỷ lệ kèo bóng đá trực tuyến hôm nay truy vấn mà không cần phân bổ tự động. Nhìn thấyPhần 33.734516_34559

EXEC tỷ lệ kèo bóng đá trực tuyến hôm nay bắt đầu phần khai báo;
    int *intp;
    char ** charp;
Exec tỷ lệ kèo bóng đá trực tuyến hôm nay end decare phần;

33.4.5. Xử lý tỷ lệ kèo bóng đá trực tuyến hôm nay loại dữ liệu SQL không nguyên nhân

34887_35130

33.4.5.1. Mảng

Mảng cấp độ SQL đa chiều không được hỗ trợ trực tiếp trong ECPG. tỷ lệ kèo bóng đá trực tuyến hôm nay mảng cấp độ SQL một chiều có thể được ánh xạ vào tỷ lệ kèo bóng đá trực tuyến hôm nay biến máy chủ c mảng C và ngược lại. Tuy nhiên, khi tạo một câu lệnh ECPG không biết tỷ lệ kèo bóng đá trực tuyến hôm nay loại của tỷ lệ kèo bóng đá trực tuyến hôm nay cột, do đó nó không thể kiểm tra xem một mảng C có được nhập vào một mảng cấp độ SQL tương ứng không. Khi xử lý đầu ra của câu lệnh SQL, ECPG có thông tin cần thiết và do đó kiểm tra xem cả hai đều là mảng.

Nếu truy vấn truy cậpElements35754_35956Số nguyên, một tỷ lệ kèo bóng đá trực tuyến hôm nay chủ của loạiintcó thể được sử dụng. Ngoài ra nếu loại phần tử làVarcharhoặcText, một tỷ lệ kèo bóng đá trực tuyến hôm nay chủ của loạichar []hoặcVarchar []có thể được sử dụng.

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

Tạo bảng T3 (
    ii số nguyên []
);

testDb = select * từ t3;
     ii
-------------
 1,2,3,4,5

Chương trình ví dụ sau lấy phần tử thứ 4 của mảng và lưu trữ nó vào một tỷ lệ kèo bóng đá trực tuyến hôm nay chủ của loạiint:

EXEC tỷ lệ kèo bóng đá trực tuyến hôm nay BẮT ĐẦU phần khai báo;
int ii;
EXEC tỷ lệ kèo bóng đá trực tuyến hôm nay END TUYÊN BỐ TUYÊN BỐ;

EXEC tỷ lệ kèo bóng đá trực tuyến hôm nay khai báo con trỏ Cur1 cho Chọn II [4] từ T3;
EXEC tỷ lệ kèo bóng đá trực tuyến hôm nay MỞ CUR1;

EXEC tỷ lệ kèo bóng đá trực tuyến hôm nay Bất cứ khi nào không tìm thấy bị phá vỡ;

while (1)

    EXEC tỷ lệ kèo bóng đá trực tuyến hôm nay tìm nạp từ Cur1 vào: II;
    printf ("ii =%d \ n", ii);

EXEC tỷ lệ kèo bóng đá trực tuyến hôm nay Đóng Cur1;

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

ii = 4

36994_37200

EXEC tỷ lệ kèo bóng đá trực tuyến hôm nay bắt đầu phần khai báo;
int ii_a [8];
EXEC tỷ lệ kèo bóng đá trực tuyến hôm nay END TUYÊN BỐ TUYÊN BỐ;

EXEC tỷ lệ kèo bóng đá trực tuyến hôm nay khai báo con trỏ Cur1 cho chọn II [1], II [2], II [3], II [4] từ T3;
EXEC tỷ lệ kèo bóng đá trực tuyến hôm nay MỞ CUR1;

EXEC tỷ lệ kèo bóng đá trực tuyến hôm nay Bất cứ khi nào không tìm thấy bị phá vỡ;

while (1)

    Exec tỷ lệ kèo bóng đá trực tuyến hôm nay tìm nạp từ Cur1 vào: ii_a [0],: ii_a [1],: ii_a [2],: ii_a [3];
    ...

Lưu ý lại rằng

EXEC tỷ lệ kèo bóng đá trực tuyến hôm nay bắt đầu phần khai báo;
int ii_a [8];
EXEC tỷ lệ kèo bóng đá trực tuyến hôm nay END TUYÊN BỐ TUYÊN BỐ;

EXEC tỷ lệ kèo bóng đá trực tuyến hôm nay tuyên bố con trỏ Cur1 cho Chọn II từ T3;
EXEC tỷ lệ kèo bóng đá trực tuyến hôm nay MỞ CUR1;

EXEC tỷ lệ kèo bóng đá trực tuyến hôm nay Bất cứ khi nào không tìm thấy bị phá vỡ;

while (1)

    /* SAI */
    EXEC tỷ lệ kèo bóng đá trực tuyến hôm nay tìm nạp từ Cur1 vào: ii_a;
    ...

Sẽ không hoạt động chính xác trong trường hợp này, vì bạn không thể ánh xạ một cột loại mảng thành một tỷ lệ kèo bóng đá trực tuyến hôm nay chủ mảng trực tiếp.

Một cách giải quyết khác là lưu trữ tỷ lệ kèo bóng đá trực tuyến hôm nay mảng trong biểu diễn chuỗi bên ngoài của chúng trong tỷ lệ kèo bóng đá trực tuyến hôm nay biến máy chủ của loạichar []hoặcVarchar []. Để biết thêm chi tiết về đại diện này, xemPhần 8.15.2. Lưu ý rằng điều này có nghĩa là mảng không thể được truy cập một cách tự nhiên dưới dạng một mảng trong chương trình máy chủ (mà không cần xử lý thêm để phân tích biểu diễn văn bản).

33.4.5.2. tỷ lệ kèo bóng đá trực tuyến hôm nay loại tổng hợp

tỷ lệ kèo bóng đá trực tuyến hôm nay loại tổng hợp không được hỗ trợ trực tiếp trong ECPG, nhưng có thể giải quyết dễ dàng. tỷ lệ kèo bóng đá trực tuyến hôm nay cách giải quyết có sẵn tương tự như tỷ lệ kèo bóng đá trực tuyến hôm nay cách được mô tả cho tỷ lệ kèo bóng đá trực tuyến hôm nay mảng ở trên: hoặc truy cập mỗi thuộc tính riêng biệt hoặc sử dụng biểu diễn chuỗi bên ngoài.

Đối với tỷ lệ kèo bóng đá trực tuyến hôm nay ví dụ sau, giả sử loại và bảng sau:

38906_39049

Giải pháp rõ ràng nhất là truy cập riêng từng thuộc tính. Chương trình sau lấy dữ liệu từ bảng ví dụ bằng cách chọn từng thuộc tính của loạicomp_triêng biệt:

EXEC SQL bắt đầu phần khai báo;
int intval;
Varchar TextVal [33];
EXEC SQL END TUYÊN BỐ TUYÊN BỐ;

/* Đặt từng phần tử của cột loại tổng hợp vào danh sách chọn. */
EXEC SQL Tuyên bố con trỏ Cur1 cho Chọn (CompVal) .IntVal, (CompVal) .TextVal từ T4;
EXEC SQL MỞ CUR1;

EXEC SQL Bất cứ khi nào không tìm thấy bị phá vỡ;

while (1)

    /* Tìm nạp từng phần tử của cột loại tổng hợp thành tỷ lệ kèo bóng đá trực tuyến hôm nay biến máy chủ. */
    EXEC SQL tìm nạp từ Cur1 thành: intval,: TextVal;

    printf ("intval =%d, textVal =%s \ n", intval, textval.arr);

EXEC SQL Đóng Cur1;

Để tăng cường ví dụ này, tỷ lệ kèo bóng đá trực tuyến hôm nay biến máy chủ để lưu trữ tỷ lệ kèo bóng đá trực tuyến hôm nay giá trị trongFetchLệnh có thể được thu thập thành một cấu trúc. Để biết thêm chi tiết về tỷ lệ kèo bóng đá trực tuyến hôm nay chủ trong mẫu cấu trúc, xemPhần 33.4.4.3.2. Để chuyển sang cấu trúc, ví dụ có thể được sửa đổi như dưới đây. Hai tỷ lệ kèo bóng đá trực tuyến hôm nay chủ,intvalTextVal, trở thành thành viên củacomp_tCấu trúc và cấu trúc được chỉ định trênFetchlệnh.

40471_41058

Mặc dù cấu trúc được sử dụng trongFetchlệnh, tên thuộc tính trongChọn41200_41268*Để yêu cầu tất cả tỷ lệ kèo bóng đá trực tuyến hôm nay thuộc tính của giá trị loại tổng hợp.

...
EXEC SQL Tuyên bố con trỏ Cur1 cho Chọn (compval).* Từ T4;
EXEC SQL MỞ CUR1;

EXEC SQL Bất cứ khi nào không tìm thấy bị phá vỡ;

while (1)

    /* Đặt tất cả tỷ lệ kèo bóng đá trực tuyến hôm nay giá trị vào danh sách chọn vào một cấu trúc. */
    EXEC SQL tìm nạp từ Cur1 thành: CompVal;

    printf ("intval =%d, textVal =%s \ n", compval.intval, compval.textval.arr);

theo cách này, tỷ lệ kèo bóng đá trực tuyến hôm nay loại tổng hợp có thể được ánh xạ vào tỷ lệ kèo bóng đá trực tuyến hôm nay cấu trúc gần như liền mạch, mặc dù ECPG không hiểu loại tổng hợp.

Cuối cùng, cũng có thể lưu trữ tỷ lệ kèo bóng đá trực tuyến hôm nay giá trị loại tổng hợp trong biểu diễn chuỗi bên ngoài của chúng trong tỷ lệ kèo bóng đá trực tuyến hôm nay biến máy chủ của loạichar []hoặcVarchar []. Nhưng theo cách đó, không dễ dàng truy cập tỷ lệ kèo bóng đá trực tuyến hôm nay trường của giá trị từ chương trình máy chủ.

33.4.5.3. tỷ lệ kèo bóng đá trực tuyến hôm nay loại cơ sở do người dùng xác định

tỷ lệ kèo bóng đá trực tuyến hôm nay loại cơ sở do người dùng xác định mới không được ECPG hỗ trợ trực tiếp. Bạn có thể sử dụng biểu diễn chuỗi bên ngoài và tỷ lệ kèo bóng đá trực tuyến hôm nay biến máy chủ của loạichar []42445_42451Varchar [], và giải pháp này thực sự phù hợp và đủ cho nhiều loại.

Đây là một ví dụ sử dụng kiểu dữ liệuphức tạpTừ ví dụ trongPhần 35.11. Biểu diễn chuỗi bên ngoài của loại đó là(%f,%f), được xác định trong tỷ lệ kèo bóng đá trực tuyến hôm nay chức năngphức tạp_in ()Complex_out ()Chức năng trongPhần 35.11. Ví dụ sau chèn tỷ lệ kèo bóng đá trực tuyến hôm nay giá trị loại phức(1,1)(3,3)vào tỷ lệ kèo bóng đá trực tuyến hôm nay cộtABvà chọn chúng từ bảng sau đó.

43225_43673

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 sử dụng trực tiếp tỷ lệ kèo bóng đá trực tuyến hôm nay loại do người dùng xác định trong ECPG và thay vào đó tạo ra một chức năng hoặc đúc chuyển đổi giữa loại do người dùng xác định và loại nguyên thủy mà ECPG có thể xử lý. Tuy nhiên, lưu ý rằng tỷ lệ kèo bóng đá trực tuyến hôm nay phôi loại đó, đặc biệt là tỷ lệ kèo bóng đá trực tuyến hôm nay loại ẩn, nên được đưa vào hệ thống loại rất cẩn thận.

Ví dụ,

44141_44294

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

EXEC SQL BẮT ĐẦU phần khai báo;
Nhân đôi A, B, C, D;
EXEC SQL END TUYÊN BỐ TUYÊN BỐ;

a = 1;
b = 2;
c = 3;
d = 4;

EXEC SQL chèn vào tỷ lệ kèo bóng đá trực tuyến hôm nay giá trị test_complex (created_complex (: a,: b), create_complex (: c,: d));

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

EXEC SQL chèn vào tỷ lệ kèo bóng đá trực tuyến hôm nay giá trị test_complex ('(1,2)', '(3,4)');

33.4.6. Chỉ báo

tỷ lệ kèo bóng đá trực tuyến hôm nay ví dụ trên không xử lý tỷ lệ kèo bóng đá trực tuyến hôm nay giá trị null. Trên thực tế, tỷ lệ kèo bóng đá trực tuyến hôm nay ví dụ truy xuất sẽ gây ra lỗi nếu chúng lấy giá trị null từ cơ sở dữ liệu. Để có thể chuyển tỷ lệ kèo bóng đá trực tuyến hôm nay giá trị null vào cơ sở dữ liệu hoặc truy xuất tỷ lệ kèo bóng đá trực tuyến hôm nay giá trị null từ cơ sở dữ liệu, bạn cần nối thêm thông số kỹ thuật của biến máy chủ thứ hai vào từng biến máy chủ chứa dữ liệu. Biến máy chủ thứ hai này được gọi làChỉ báovà chứa một lá 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. Dưới đây là một ví dụ xử lý đúng tỷ lệ kèo bóng đá trực tuyến hôm nay giá trị null một cách chính xác:

EXEC tỷ lệ kèo bóng đá trực tuyến hôm nay bắt đầu phần khai báo;
Varchar val;
int val_ind;
EXEC tỷ lệ kèo bóng đá trực tuyến hôm nay END TUYÊN BỐ TUYÊN BỐ:

 ...

EXEC tỷ lệ kèo bóng đá trực tuyến hôm nay Chọn B vào: val: val_ind từ test1;

45617_45642Val_indsẽ bằng không nếu giá trị không phải là null và nó sẽ âm nếu giá trị null.

Chỉ báo có hàm khác: Nếu giá trị chỉ báo dương, điều đó có nghĩa là giá trị không phải là null, nhưng nó đã bị cắt ngắn khi nó được lưu trữ trong tỷ lệ kèo bóng đá trực tuyến hôm nay chủ.

Nếu đối số-r no_indicatorđược chuyển cho bộ tiền xử lýECPG, nó hoạt động trong"Không chỉ đạo"chế độ. Trong chế độ không chỉ định, nếu không có biến chỉ báo được chỉ định, tỷ lệ kèo bóng đá trực tuyến hôm nay giá trị null được báo hiệu (trên đầu vào và đầu ra) cho tỷ lệ kèo bóng đá trực tuyến hôm nay loại chuỗi ký tự là chuỗi trống và cho tỷ lệ kèo bóng đá trực tuyến hôm nay loại số nguyên là giá trị thấp nhất có thể cho loại (ví dụ:int_minchoint).