Tags: , , | Categories: sql Posted by talgiladi on 1/23/2008 5:29 PM | Comments (6)
Technorati Tags: ,,

הזכרנו מספר פעמים את היתרון של stored procedures מנקודת אבטחת מידע. אולם אחת הבעיות שיש ב stored procedures היא שיש נתונים שלא ניתן להעביר כפרמטר, לדוגמה, העמודה לפיה ממיינים. נניח שיש לי דף שניתן למיון לפי מספר עמודות, לא ניתן להעביר ל stored procedure את שם העמודה למיון בצורה הבאה:

create procedure temp1
@sortName varchar(20)
as
begin
select * from article order by @sortName
end

אז מה כן עושים אם אנו עדיין רוצים להמשיך להשתמש ב stored procedures וגם לאפשר מיונים לפי שדות שונים?
אז צריך קצת להתחכם, וגם לסרבל, אבל עדיין נראה לי שזה שווה את זה...
נניח שיש לי 2 עמודות שניתן למיין לפיהן, וגם ניתן למיין בסדר עולה או יורד. אז נכון שתמיד ניתן להשתמש ב sp_executesql , אבל אז הלכה כל התועלת של שימוש ב stored procedure... מישהו פעם הציע לי לבנות 4  stored procedures... כמובן שזה לא סביר... אבל נעשה משהו די דומה:)

create procedure temp1
@sortName varchar(20),
@sortDirection varchar(4)='asc'
as
begin

select * from article order by

case WHEN @sortName = 'article_id' and @sortDirection='asc' THEN article_id end asc,
case WHEN @sortName = 'article_id' and @sortDirection='desc' THEN article_id end desc,
case WHEN @sortName = 'publish_date' and @sortDirection='asc' THEN publish_date end asc,
case WHEN @sortName = 'publish_date' and @sortDirection='desc' THEN publish_date end desc
end

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5