webForumDet fria alternativet

stored procedure

5 svar · 343 visningar · startad av P

PMedlem sedan jan. 20012 204 inlägg
#1

Vad är egentligen det?

LarsGMedlem sedan dec. 200012 464 inlägg
#2

Det är ett program som exekveras i databasservern.

Man kan skriva en funktion som denna t.ex.

   create function getSubCat(p_id int) 
   returns character varying(400)
   reads sql data
   begin
       declare a cursor for select subCategory 
        from subCategory 
       where categoryId = p_id;
       declare names varchar(400) default '';

       open a;
       begin
            declare exit handler for not found begin end;
            declare subCategory varchar(18);
            loop
                  fetch a into subCategory;
                  set names = names || subCategory;
            end loop;
       end;
       close a;
       return names;
   end

En funktion kan sedan användas var som helst i andra sql-satser

select category,getSubCat(categoryId) from category
 where category = 'Thriller'

Man kan också skriva en procedur som man anropar som ett separat statement, t.ex. om man vill utföra flera saker med ett anrop

create procedure storeSubCategory(in p_category varchar(30),
in p_subCategory varchar(30))
modifies sql data
begin
   declare v_categoryId int;
   declare exit handler for sqlexception
   begin
       rollback;
       resignal;
   end;

   start transaction;
   if not exists (select * from category 
       where category = p_category) then
      set v_categoryId = next value for categorySequence;
      insert into category values(v_categoryId,p_category);
   end if;

   insert into subCategory 
    select p_subCategory,categoryId 
        from category 
       where category = p_category;
  commit;
end

För att anropa denna

call storeSubCategory('Thriller','The crooked hinge')

Det finns lite olika språk för att skriva procedurer/funktioner. Ovanstående använder den syntax som finns i sql-standarden. De flesta dbms har en egen syntax.

PMedlem sedan jan. 20012 204 inlägg
#3

fattar inte så mycket om jag ska vara ärlig... vad finns det för fördelar med det här jämfört med traditionell "kod".

hittade den här "koden" eller vad det kallas på en sida:

CREATE Procedure UserLogin
    (
        @Email    nvarchar(100),
        @Password nvarchar(20),
        @UserName nvarchar(100) OUTPUT
    )
    AS

    SELECT
        @UserName = Name

    FROM
        Users

    WHERE
        Email = @Email
    AND
        Password = @Password

anropar man det här på något sätt sen lr?

JAreMANNENMedlem sedan aug. 20002 272 inlägg
#4

använder du ASP så kan du anropa den från din sida såhär:

sql = " EXEC UserLogin @Email = '"& strEmail &"', @Password = '"& strPasswd &"', @Username = '"& strUserName &"' "
LarsGMedlem sedan dec. 200012 464 inlägg
#5

Fördelar med stored procedures:

Prestanda - dels eftersom man kan utföra flera frågor med ett anrop och dels då en procedur redan är kompilerad.

Säkerhet - den som anropar proceduren behöver inte ha privilegier för de tabeller som används i proceduren.

PMedlem sedan jan. 20012 204 inlägg
#6

hmm kör asp.net

131 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)