de-vraag
  • Otázky
  • Značky
  • Používatelia
Oznámenia
Odmeny
Registrácia
Po registrácii budete informovaní o odpovediach a komentároch na vaše otázky.
Prihlásiť sa
Ak už máte konto, prihláste sa a skontrolujte nové oznámenia.
Za pridané otázky, odpovede a komentáre budú udelené odmeny.
Viac na
Zdroj
Upraviť
George Stocker
George Stocker
Question

Čo je uložená procedúra?

Čo je uložená procedúra? Ako fungujú? Aké je zloženie uloženej procedúry (čo všetko musí byť uloženou procedúrou)?

281 2009-01-19T22:33:24+00:00 3
Peter Mortensen
Peter Mortensen
Edited question 18 január 2017 в 6:05
Programovanie
sql
sql-server
stored-procedures
tsql
This question has 1 odpoveď in English, to read them log in to your account.
Solution / Answer
 JoshBerke
JoshBerke
19 január 2009 в 10:57
2009-01-19T22:57:15+00:00
Viac na
Zdroj
Upraviť
#8758286

Uložené procedúry sú dávky príkazov SQL, ktoré možno vykonať niekoľkými spôsobmi. Väčšina hlavných DBM podporuje uložené procedúry, nie všetky však áno. Podrobnosti si musíte overiť v dokumentácii nápovedy konkrétneho DBMS. Keďže najlepšie poznám SQL Server, použijem ho ako ukážky.

Syntax vytvorenia uloženej procedúry je pomerne jednoduchá:

CREATE PROCEDURE <owner>.<procedure name>

     <param> <datatype>

AS

     <Body>

Takže napríklad:

CREATE PROCEDURE Users_GetUserInfo

    @login nvarchar(30)=null

AS

    SELECT * from [Users]
    WHERE ISNULL(@login,login)=login

Výhodou uložených procedúr je, že môžete centralizovať logiku prístupu k údajom na jedno miesto, ktoré potom DBA's ľahko optimalizuje. Uložené procedúry majú aj bezpečnostnú výhodu v tom, že uloženej procedúre môžete udeliť práva na vykonávanie, ale používateľ nemusí mať práva na čítanie/zápis do základných tabuliek. To je dobrý prvý krok proti SQL injection.

Uložené procedúry majú aj nevýhody, v podstate ide o údržbu spojenú s vašou základnou operáciou CRUD. Povedzme, že pre každú tabuľku máte Insert, Update, Delete a aspoň jeden select na základe primárneho kľúča, to znamená, že každá tabuľka bude mať 4 procedúry. Teraz si vezmite slušne veľkú databázu so 400 tabuľkami a budete mať 1600 procedúr! A to za predpokladu, že nemáte duplikáty, čo pravdepodobne budete mať.

V tomto prípade má obrovskú výhodu použitie ORM alebo inej metódy na automatické generovanie základných operácií CRUD.

Brad Turek
Brad Turek
Edited answer 22 november 2017 в 6:51
230
0
 sidhewsar
sidhewsar
13 jún 2013 в 10:16
2013-06-13T10:16:48+00:00
Viac na
Zdroj
Upraviť
#8758287

Uložená procedúra je súbor predkompilovaných príkazov SQL, ktoré sa používajú na vykonanie špeciálnej úlohy.

Príklad: Ak mám tabuľku Employee

Employee ID  Name       Age  Mobile
---------------------------------------
001          Sidheswar  25   9938885469
002          Pritish    32   9178542436

Najprv načítam tabuľku Zamestnanec:

Create Procedure Employee details
As
Begin
    Select * from Employee
End

Spustenie postupu na serveri SQL Server:

Execute   Employee details

--- (Employee details is a user defined name, give a name as you want)

Po druhé, vložím hodnotu do tabuľky Zamestnanci

Create Procedure employee_insert
    (@EmployeeID int, @Name Varchar(30), @Age int, @Mobile int)
As
Begin
    Insert Into Employee
    Values (@EmployeeID, @Name, @Age, @Mobile)
End

Spustenie parametrizovanej procedúry na serveri SQL Server:

Execute employee_insert 003,’xyz’,27,1234567890

  --(Parameter size must be same as declared column size)

Príklad: @Názov Varchar(30)

V tabuľke Zamestnanec musí mať stĺpec Name veľkosť varchar(30).

Peter Mortensen
Peter Mortensen
Edited answer 18 január 2017 в 7:14
143
0
Dave Swersky
Dave Swersky
19 január 2009 в 10:45
2009-01-19T22:45:29+00:00
Viac na
Zdroj
Upraviť
#8758285

Všeobecne platí, že uložená procedúra je "funkcia SQL." Majú:

-- a name
CREATE PROCEDURE spGetPerson
-- parameters
CREATE PROCEDURE spGetPerson(@PersonID int)
-- a body
CREATE PROCEDURE spGetPerson(@PersonID int)
AS
SELECT FirstName, LastName ....
FROM People
WHERE PersonID = @PersonID

Toto je príklad zameraný na T-SQL. Uložené procedúry môžu vykonávať väčšinu príkazov SQL, vracať skalárne a tabuľkové hodnoty a považujú sa za bezpečnejšie, pretože zabraňujú útokom SQL injection.

Andrey Morozov
Andrey Morozov
Edited answer 13 jún 2013 в 10:53
36
0
Pridať otázku
Kategórie
Všetky
Technológia
Kultúra / Rekreácia
Život / Umenie
Veda
Profesionálne
Obchod
Používatelia
Všetky
New
Popular
1
Zuxriddin Muydinov
Registered pred 11 hodinami
2
Денис Анненский
Registered pred 2 dňami
3
365
Registered pred týždňom
4
True Image
Registered pred týždňom
5
archana agarwal
Registered pred týždňom
DE
EL
ES
FR
ID
IT
JA
KO
NL
PT
RU
SK
SL
TR
ZH
© de-vraag 2022
Zdroj
stackoverflow.com
na základe licencie cc by-sa 3.0 s uvedením autora