2013-09-22 39 views

Trả lời

5

dấu chấm phẩy cho biết kết thúc câu lệnh, vì vậy nếu có nhiều câu lệnh thì bạn nên sử dụng dấu chấm phẩy khác nó sẽ hoạt động tốt.

Tôi thường sử dụng dấu chấm phẩy làm thực tiễn, nó có thể hữu ích ngay cả khi bạn đang chạy truy vấn trên máy khách sql, ví dụ: trong Sql Developer sử dụng dấu chấm phẩy là rất hữu ích nếu bạn có nhiều câu lệnh trên trang tính, vì bạn có thể chỉ cần đi đến câu lệnh cụ thể đó và sử dụng F9 để thực thi điều đó, không có dấu chấm phẩy thì điều này là không thể.

+3

Trong hầu hết các trình điều khiển JDBC ngay cả khi bạn thêm dấu chấm phẩy để tách biệt câu lệnh, nó sẽ không hoạt động ... – aleroot

+0

Thực hiện nhiều câu lệnh trong một chuỗi là - theo đặc tả - không được phép trong JDBC –

3

Nó không phải là bắt buộc nếu bạn chạy một truy vấn duy nhất tại thời điểm, nó đến cần thiết thay vào đó nếu bạn muốn chạy nhiều truy vấn bằng một lệnh duy nhất.

Tuy nhiên trong hầu hết các trình điều khiển JDBC ngoài kia không thể để thêm nhiều truy vấn tách ra với dấu chấm phẩy trong một lệnh JDBC duy nhất, nó tồn tại tuy nhiên phương pháp addBatch cho phép bạn thêm nhiều câu lệnh:

java.sql.Statement stmt=con.createStatement(); 
stmt.addBatch(insert_query1); //insert_query1 
stmt.addBatch(insert_query2); //insert_query2 

Theo nguyên tắc chung, trong dấu chấm phẩy JDBC là không cần thiết chút nào, nếu bạn cần sử dụng nhiều câu lệnh addBatch.

1

Phụ thuộc vào số phiên bản và DBMS. Dấu chấm phẩy thường là tùy chọn ở cuối một câu lệnh. Nhưng nếu bạn định thực thi một kịch bản với nhiều hơn một câu lệnh, chúng cần được chấm dứt bằng dấu chấm phẩy.

Ngoại trừ trường hợp cuối cùng. Nhưng có vẻ như hình thức xấu là không phù hợp.

3

Thông thường, dấu chấm phẩy không phải là một phần của cú pháp thực tế của một câu lệnh (vì hầu hết các API nội bộ của cơ sở dữ liệu thực hiện một câu lệnh duy nhất tại một thời điểm). Thay vào đó, dấu chấm phẩy là dấu phân cách hoặc dấu phân tách 'cuối câu lệnh', thường - được định nghĩa trong CLI hoặc các công cụ tạo kịch bản cho cơ sở dữ liệu. Điều này cho phép công cụ đó biết khi nào một câu lệnh kết thúc, vì vậy nó có thể gửi câu lệnh đơn đó đến cơ sở dữ liệu để thực thi.

Mặt khác, api JDBC được thiết kế để thực hiện một câu lệnh (!) Tại một thời điểm, vì vậy bạn không cần một dấu phân cách như vậy (câu lệnh là toàn bộ chuỗi). Điều này có nghĩa rằng một dấu chấm phẩy là không cần thiết, và vì nó không phải là một phần của cú pháp câu lệnh thực tế cho rất nhiều cơ sở dữ liệu, nó cũng là một lỗi cú pháp để bao gồm nó. Một số trình điều khiển JDBC sẽ loại bỏ ; cuối cùng từ một tuyên bố để 'sửa', một số trình điều khiển không.

Một số trình điều khiển cho phép - trái với đặc tả JDBC - nhiều câu lệnh được thực thi dưới dạng một chuỗi, điều này thường phải được bật với thuộc tính kết nối, ví dụ cho MySQL là tùy chọn allowMultiQueries (xem MySQL properties để biết chi tiết).

Các vấn đề liên quan