2010-03-15 19 views

Trả lời

164

bạn syntax là không hoàn toàn đúng: bạn cần phải liệt kê các lĩnh vực theo thứ tự trước khi INTO, và các biến mục tiêu tương ứng sau:

SELECT Id, dateCreated 
INTO iId, dCreate 
FROM products 
WHERE pName = iName 
+4

+1. Đây là trường hợp cú pháp T-SQL rõ ràng hơn. Việc có những danh sách riêng biệt này sẽ gây ra cùng một vấn đề về bảo trì như DECLARE CURSOR và FETCH (không phải là tôi, uh, từng sử dụng chúng). – harpo

+0

Tương tự cho Pl/Sql là tốt. –

1

Ngoài ra để Martin trả lời, bạn cũng có thể thêm phần VÀO ở phần cuối của các truy vấn để thực hiện truy vấn dễ đọc hơn:

SELECT Id, dateCreated FROM products INTO iId, dCreate 
7

========== Tư vấn ==========

@ Martin clayton trả lời tôi đúng, nhưng đây chỉ là lời khuyên.

Vui lòng tránh sử dụng biến không rõ ràng trong quy trình được lưu trữ.

Ví dụ:

SELECT Id, dateCreated 
INTO id, datecreated 
FROM products 
WHERE pName = iName 

Ví dụ trên sẽ gây ra một lỗi (lỗi giá trị null)

Ví dụ đưa ra dưới đây là đúng. Tôi hy vọng điều này có ý nghĩa.

Ví dụ:

SELECT Id, dateCreated 
INTO val_id, val_datecreated 
FROM products 
WHERE pName = iName 

Bạn cũng có thể làm cho họ rõ ràng bằng cách tham khảo bảng, như:

[Credit: maganap]

SELECT p.Id, p.dateCreated INTO id, datecreated FROM products p 
WHERE pName = iName 
+0

Tôi đã gặp sự cố này, cảm ơn bạn đã thêm vào câu trả lời ở trên. – Benp44

+0

Bạn cũng có thể làm cho họ rõ ràng bằng cách tham khảo bảng, như: 'CHỌN p.Id, p.dateCreated VÀO id, DateCreated TỪ sản phẩm p ĐÂU pName = iName' – maganap

+0

Gợi ý tốt Cảm ơn @maganap –