Có nên dùng stored procedure

Hướng dẫn cách sử dụng Stored Proceduce và một số lưu ý

Cách sử dụng Stored Proceduce

Khi bạn kết nối với cơ sở dữ liệu SAP Sybase ASE, Microsoft SQL Server hoặc Teradata bằng Tableau, bạn có thể sử dụng stored procedure (sp) để xác định nguồn dữ liệu.

Đối với Oracle, bạn có thể sử dụng table function để xác định kết nối. Các table function của Oracle hoạt động tương tự như các sp và được liệt kê trong Stored Procedures trên trang Data Source.

Khi bạn tạo nguồn dữ liệu bằng một trong các loại dữ liệu này, các sp có sẵn được liệt kê trong Stored Procedures, như trong ví dụ về Microsoft SQL Server:

Từ khung bên trái, kéo sp vào khung thiết kế nguồn dữ liệu hoặc bấm đúp vào một trong các thủ tục được liệt kê. Nếu tham số có sẵn trong sp, hộp thoại Parameters sẽ tự động hiển thị.

Thay vì nhập một giá trị, bạn có thể sử dụng tham số Tableau có sẵn trong workbook hoặc tạo tham số Tableau mới:

Các ràng buộc sp cho cơ sở dữ liệu SQL Server

Những ràng buộc sau được áp dụng cho sp trong cơ sở dữ liệu SQL Server.

- Nếu kết quả của một sp chứa các cột loại IMAGE hoặc TEXT, sp sẽ thông báo lỗi "Incorrect syntax".

- Nếu tổng chiều rộng của tập kết quả (số byte trong mỗi hàng) vượt quá 8060, sp sẽ bị lỗi. Điều này có thể xảy ra với các bảng quá rộng (hàng trăm cột) hoặc với các bảng có các cột văn bản lớn, dự định chứa hàng ngàn ký tự của văn bản.

- Tableau không hiển thị các sp được lưu trữ từ lược đồ "sys" (các sp có sẵn của hệ thống).

- Nếu người dùng không cung cấp giá trị cho một hoặc nhiều tham số mà sp yêu cầu, Tableau sẽ hiển thị lỗi cơ sở dữ liệu SQL Server ở dạng "The procedure requires a value for parameter @x but one was not provided." Tableau Desktop không hỗ trợ kiểu dữ liệu TIME. Khi các trường thuộc loại này được trả ra trong một sp trên cơ sở dữ liệu Microsoft SQL Server, Tableau Desktop sẽ không nhập chúng

Cách sử dụng Stored Proceduce

Các ràng buộc sp cho cơ sở dữ liệu SQL Server


View Full Version : Những lý do để dùng Stored Procedure ?



Mình viết 1 Class có chức năng Insert, Update, Select, Delete cho bất cứ một tabel nào, chỉ cần truyền tham số và tên bảng là nó tự làm việc, do đó việc lập trình rất đơn giản.

Tuy nhiên có người nói với mình rằng, cách này chỉ tiện cho lập trình thôi, chứ việc xử lý như vậy chậm và không hiệu quả bằng cách dùng Stored Procedure mặc dù phải viết Stored Procedure...

Ví dụ 1 database có 40 tables, phải viết 40 cái Insert + 40 update + 40 Select + ... thì mình thấy mất thời gian quá nên dùng cách dùng một lớp dùng chung cho toàn bộ.

Vậy theo bạn có nên dùng Stored Procedures hay dùng cách viết hàm dùng chung cho toàn bộ Tables ?


Còn tuỳ vào mục đích công việc cũng như quy mô của Database mà có nên sử dụng SP hay không, chẳng hạn nếu Database đó được thiết kế bằng Access thì ....hoàn toàn không cần thiết, SP rất mạnh mẽ trong SQL Server vì các functions, SP đã được biên dịch trước, khi run, hệ thống không cần biên dịch lại mà chúng ta chỉ cần truyền tham số đầu vào là được, vì vậy tốc độ thực thi của SP thường rất nhanh, vả lại nó phú hợp với việc lập trình theop từng Modules, mà không phụ thuộc vaò các modules khác. Tuy nhiên, cũng còn tuỳ mục đích sử dụng.


TheFriends

14-07-2004, 02:15

dùng Stored Procedure để cho chương trình tăng tốc độ lên vì khi chạy thì nó chạy trên server và chỉ chạy lần đầu, mấy lần sau ko cần phải đọc lại nữa mà cứ việc chạy, cho nên viết Stored Procedure cũng là cần thiết.


KEM_WALL

14-07-2004, 07:46

dùng Stored Procedure để cho chương trình tăng tốc độ lên vì khi chạy thì nó chạy trên server và chỉ chạy lần đầu, mấy lần sau ko cần phải đọc lại nữa mà cứ việc chạy, cho nên viết Stored Procedure cũng là cần thiết.

việc dùng sproc làm chương trình chạy nhanh hơn thì đúng, nhưng việc sproc chỉ chạy lần đầu ,mấy lần sau không đọc nữa mà cứ chạy thì walls chưa nghe nói :shifty:

to tuấn: xài class chung chạy chậm lắm, mất công làm sproc 1 tí, nhưng speed cần hơn


TheFriends

14-07-2004, 07:52

hehe, chính vì ưu điểm đó nên người ta mới dùng store, nhưng cũng được khuyến cáo là không phải cái nào cũng dùng store hết, chỉ cái nào thường xuyên dùng đến database thì nên dùng


KEM_WALL

14-07-2004, 08:22

hehe, chính vì ưu điểm đó nên người ta mới dùng store, nhưng cũng được khuyến cáo là không phải cái nào cũng dùng store hết, chỉ cái nào thường xuyên dùng đến database thì nên dùng

bạn chưa hiểu ý walls gòi, đưa ra docs nào muh nói sproc chỉ chạy lần đầu xem ? hay là bạn đoán vậy ?
chẳng lẽ mấy lần sau nó không cập nhật thay đổi của database muh cứ đưa ra thông tin cũ ?

sproc chạy tốt hơn query vì thứ nhất, không tốn nhiều bandwidth (do được create xong thì nằm trên server, lúc chạy cần pass params thôi), thứ 2, sproc được sqlcommand tối ưu sẵn (đối với m$ sql thui nha) - theo tài liệu của m$. thứ 3 là m$ sql cũng đã tối ưu sẵn sproc hơn query.


Hey, cảm ơn các bạn nhiều đã cho ý kiến, mình đã chuyển sang dùng SP rồi, quả thật nó rất tiện, thanks


có điều thế này....nếu bạn đang sống trong thế giới .NET thì dùng store Procedure phải cẩn thận vì tính bảo mật không cao nếu dùng môi trường mạng...vì thế mới phát sinh dataset trong .NET gọi là disconnected Environment


KEM_WALL

17-07-2004, 08:01

?? chưa hiểu ý bạn ?
sproc bảo mật không cao àh, điều này walls chưa biết, bạn có thể cho 1 vài cái link được kô ?
theo walls sproc bảo mật cao hơn query string bình thường, vd mấy cái sql injection, trong query thường thì có thể bị, chứ pass vào sproc thì ms sql ngăn ngay.

còn cái dataset liên quan gì ở đây ? vì query hay sproc đều có thể bỏ data vào nó. nếu nói sproc không an toàn thì walls nghĩ query càng không...


Tetsu81vn

18-07-2004, 07:51

cha mẹ ơi , proc mà kém bảo mật hơn query sao , ngược clại thì có , proc bảo ở cấp độ user role trong sql server nên phải bảo mật hơn inline sql rồi.
Lợi ích của proc :
+Chạy nhanh
+bảo mật.
+Tách biệt business logic, data tier và presentional tier (n-tier architecture)


Mấy người đừng cãi nhau nữa. Đọc cái này biết liền.

Understanding and Optimizing ADO.NET 1.1 Performance
hxxp://www.only4gurus.com/v2/download.asp?ID=5907

Down cái file PPT về đọc đi, cãi làm chi. :)


Đây có nhiều cái hay lắm về ADO.NET:

hxxp://www.only4gurus.com/v2/ShowCat.asp?Cat=.NET%20Data%20Access


Powered by vBulletin® Version 4.2.0 Copyright © 2022 vBulletin Solutions, Inc. All rights reserved.