יום שלישי, 1 במאי 2018

יצירת פרוצדורה ב-SQL Server

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













מדובר בכלי שימושי מאוד. בהצלחה.

אין תגובות:

הוסף רשומת תגובה