Trong nhiều trường hợp, các câu lệnh kèo bóng đá pháp cụ thể mà một ứng dụng phải thực thi được biết đến tại thời điểm ứng dụng được viết. Tuy nhiên, trong một số trường hợp, các câu lệnh kèo bóng đá pháp được sáng tác tại thời điểm chạy hoặc được cung cấp bởi một nguồn bên ngoài. Trong những trường hợp này, bạn không thể nhúng các câu lệnh kèo bóng đá pháp trực tiếp vào mã nguồn C, nhưng có một cơ sở cho phép bạn gọi các câu lệnh kèo bóng đá pháp tùy ý mà bạn cung cấp trong một biến chuỗi.
Cách đơn giản nhất để thực thi câu lệnh kèo bóng đá pháp tùy ý là sử dụng lệnhthực hiện ngay lập tức
. Ví dụ:
11623_11769
thực hiện ngay lập tức
Có thể được sử dụng cho các câu lệnh kèo bóng đá pháp không trả về tập kết quả (ví dụ: DDL,Chèn
, Cập nhật
, Xóa
). Bạn không thể thực hiện kèo bóng đá pháp câu lệnh truy xuất dữ liệu (ví dụ:Chọn
) Theo cách này. Phần tiếp theo mô tả cách làm điều đó.
Một cách mạnh mẽ hơn để thực hiện các câu lệnh kèo bóng đá pháp tùy ý là chuẩn bị chúng một lần và thực hiện câu lệnh đã chuẩn bị thường xuyên như bạn muốn. Cũng có thể chuẩn bị một phiên bản tổng quát của một câu lệnh và sau đó thực hiện các phiên bản cụ thể của nó bằng cách thay thế các tham số. Khi chuẩn bị tuyên bố, hãy viết các dấu câu hỏi mà bạn muốn thay thế các tham số sau này. Ví dụ:
EXEC kèo bóng đá pháp BẮT ĐẦU phần khai báo; const char *stmt = "chèn vào các giá trị test1 (?,?);"; EXEC kèo bóng đá pháp END TUYÊN BỐ TUYÊN BỐ; EXEC kèo bóng đá pháp Chuẩn bị MyStmt từ: STMT; ... EXEC kèo bóng đá pháp Thực thi MyStmt bằng 42, 'foobar';
12980_13059
EXEC kèo bóng đá pháp DealLocate Preptên
;
Để thực thi câu lệnh kèo bóng đá pháp với một hàng kết quả duy nhất,thực thi
có thể được sử dụng. Để lưu kết quả, thêm mộtthành
mệnh đề.
EXEC kèo bóng đá pháp BẮT ĐẦU phần khai báo; const char *stmt = "chọn a, b, c từ test1 trong đó a?"; int v1, v2; Varchar v3 [50]; EXEC kèo bóng đá pháp END TUYÊN BỐ TUYÊN BỐ; EXEC kèo bóng đá pháp Chuẩn bị MyStmt từ: STMT; ... EXEC kèo bóng đá pháp EXECUTE myStmt thành: v1,: v2,: v3 sử dụng 37;
ANthực thi
lệnh có thể cóthành
mệnh đề, Asử dụng
mệnh đề, cả hai hoặc không.
Nếu một truy vấn dự kiến sẽ trả về nhiều hơn một hàng kết quả, nên sử dụng con trỏ, như trong ví dụ sau. (Nhìn thấyPhần 35.3.2Để biết thêm chi tiết về con trỏ.)
EXEC kèo bóng đá pháp bắt đầu khai báo; Char Dbaname [128]; DatName char [128]; char *stmt = "Chọn U.usename là Dbaname, D.DatName" "Từ pg_database D, pg_user u" "Trường hợp D.Datdba = U.Usesysid"; EXEC kèo bóng đá pháp END TUYÊN BỐ TUYÊN BỐ; EXEC kèo bóng đá pháp kết nối với TestDB với tư cách là người dùng người dùng CON1; Exec kèo bóng đá pháp chọn pg_catalog.set_config ('search_path', '', false); Exec kèo bóng đá pháp cam kết; EXEC kèo bóng đá pháp Chuẩn bị STMT1 từ: STMT; EXEC kèo bóng đá pháp tuyên bố con trỏ con trỏ cho STMT1; Exec kèo bóng đá pháp mở con trỏ1; EXEC kèo bóng đá pháp Bất cứ khi nào không tìm thấy bị phá vỡ; while (1) Exec kèo bóng đá pháp Fetch Con trỏ1 vào: DBANAME,: DATNAME; printf ("dbaname =%s, datName =%s \ n", dbaname, datName); Exec kèo bóng đá pháp Đóng con trỏ1; Exec kèo bóng đá pháp cam kết; Exec kèo bóng đá pháp ngắt kết nối tất cả;