Procedure - TSQL
פרוצדורה היא פונקציה (קטע קוד) ששמורה בשרת ה-SQL ומבצעת רצף פעולות בעת שקוראים לה.
פרוצדורה יכולה לקבל ערכים ולהחזיר ערכים.
יצירה:
CREATE procedure שם
@Parameter01 int, @Parameter02 nvarchar(30) -- קבלת פרמטרים
AS
...קוד...
go
עריכת פרוצדורה שכבר יצרנו:
ALTER procedure שם
@Parameter01 int, @Parameter02 nvarchar(30) -- קבלת פרמטרים
AS
...קוד...
go
נדגים פרוצדורה שמקבלת שני ערכים: ערך int וערך String.
הפרוצדורה בודקת מה יש יותר:
1. יותר שחקנים בטבלת Players שהשם שלהם מתחיל בString שקיבלנו וה-ID שלהם גדול מהint שקיבלנו.
2. יותר שחקנים בטבלת Players שהשם שלהם מסתיים בString שקיבלנו וה-ID שלהם גדול מהint שקיבלנו.
אם מצב '1' מתקיים - הפרוצדורה תחזיר את כל המשתמשים המתאימים (שהשם שלהם מתחיל בString שקיבלנו וה-ID שלהם גדול מהint שקיבלנו)
אם מצב '2' מתקיים - הפרוצדורה תחזיר את כל המשתמשים המתאימים (שהשם שלהם מסתיים בString שקיבלנו וה-ID שלהם גדול מהint שקיבלנו)
CREATE procedure [dbo].[MyFirstProcedure]
@Parameter01 int, @Parameter02 nvarchar(30)
AS
declare @StartCount int -- יצירת משתנה חדש
declare @EndCount int -- יצירת משתנה חדש
-- set כדי לשים ערך במשתנה צריך להשתמש ב
set @StartCount = (select count(*) from Players
where [ID] > @Parameter01 AND [UserName] like @Parameter02+'%' )
set @EndCount = (select count(*) from Players
where [ID] > @Parameter01 AND [UserName] like '%'+@Parameter02 )
if (@EndCount = @StartCount)
begin -- התחלת בלוק
select 'NO USERS' as UserName
RETURN -- לעצור
end -- סיום בלוק
if(@EndCount < @StartCount)
begin
-- החזרת תוצאות השאילתה
select [UserName]
from Players
where [ID] > @Parameter01 AND [UserName] like @Parameter02+'%'
end
else
begin
select [UserName]
from Players
where [ID] > @Parameter01 AND [UserName] like '%'+@Parameter02
end
go
אחרי שיצרנו את הפרוצדורה, נוכל להפעיל אותה כך:
EXEC [dbo].[MyFirstProcedure] 3, 't'
את הפרוצדורות שיצרנו נוכל למצוא שמורות בשרת:
Databases > MyDBName > Programmability > Stored Procedures > HERE
בלחיצה ימינית על הפרוצדורה שלנו ניתן לצפות ולערוך אותה:
Right click > Script Stored Procedure as > ALTER To > New Query Editor Window
מדובר בכלי שימושי מאוד. בהצלחה.
אין תגובות:
הוסף רשומת תגובה