Ce este o procedură stocată? Cum funcționează? Ce este make-up de o procedură stocată (fiecare trebuie trebuie să fie o procedură stocată)?
Procedurile stocate sunt un lot de declarații SQL care pot fi executate într-un cuplu de moduri. Cele mai importante baze de date de sprijin proceduri stocate; cu toate acestea, nu toate o fac. Veți avea nevoie pentru a verifica cu anumite baze de date documentație de ajutor pentru detalii. Ca eu sunt cel mai familiarizat cu SQL Server voi folosi ca probe.
Să se creeze o procedură stocată sintaxa este destul de simplu:
CREATE PROCEDURE <owner>.<procedure name>
<param> <datatype>
AS
<Body>
Deci, de exemplu:
CREATE PROCEDURE Users_GetUserInfo
@login nvarchar(30)=null
AS
SELECT * from [Users]
WHERE ISNULL(@login,login)=login
Un beneficiu de proceduri stocate este că puteți centraliza datele de acces logic într-un singur loc, care este apoi ușor pentru DBA's pentru a optimiza. Proceduri stocate, de asemenea, o prestație de securitate în care puteți acorda executa drepturile la o procedură stocată, dar utilizatorul nu va trebui să aveți permisiuni de citire/scriere pe bază de tabele. Acesta este un prim pas bun împotriva SQL injection.
Proceduri stocate vin cu dezavantaje, practic întreținere asociate cu datele de bază CRUD operațiune. Las's spun pentru fiecare tabel trebuie un Insert, Update, Delete și cel puțin o selectați pe baza de cheie primară, asta înseamnă că fiecare tabel va avea 4 proceduri. Acum, ia o dimensiune decent baza de date de 400 de mese, și aveți 1600 de proceduri! Și că's presupunând că don't au duplicate care, probabil, va.
Acest lucru este în cazul în care, folosind o ORM sau o altă metodă pentru a genera automat bază operațiuni CRUD are o tona de merit.
O procedură stocată este un set de precompilate declarații SQL care sunt utilizate pentru a efectua o sarcină specială.
Exemplu: Dacă am avea un "Angajat" de masă
Employee ID Name Age Mobile
---------------------------------------
001 Sidheswar 25 9938885469
002 Pritish 32 9178542436
În primul rând am de recuperat "Angajat" de masă:
Create Procedure Employee details
As
Begin
Select * from Employee
End
Pentru a rula procedura pe SQL Server:
Execute Employee details
--- (Employee details is a user defined name, give a name as you want)
Apoi, în al doilea rând, introducerea valorii în Tabelul de Angajat
Create Procedure employee_insert
(@EmployeeID int, @Name Varchar(30), @Age int, @Mobile int)
As
Begin
Insert Into Employee
Values (@EmployeeID, @Name, @Age, @Mobile)
End
Pentru a rula parametrizat procedura pe SQL Server:
Execute employee_insert 003,’xyz’,27,1234567890
--(Parameter size must be same as declared column size)
Exemplu: @Nume Varchar(30)
În "Angajat" de masă "Denumirea" coloana's dimensiunea trebuie să fie varchar(30)
.
O procedură stocată este un grup de instrucțiuni SQL care a fost creat și stocate în baza de date. O procedură stocată va accepta parametri de intrare, astfel încât o singură procedură poate fi utilizată în rețea de către mai mulți clienți folosind diferite date de intrare. Unei proceduri stocate se va reduce traficul în rețea și de a crește performanța. Dacă vom modifica o procedură stocată toti clientii vor primi actualizate proceduri stocate.
Proba de creare a unei proceduri stocate
CREATE PROCEDURE test_display
AS
SELECT FirstName, LastName
FROM tb_test;
EXEC test_display;
Avantaje ale folosind proceduri stocate
Puteți crea procedura de o dată, se păstrează în baza de date, și apela orice număr de ori în programul tău.
Dacă operația necesită o cantitate mare de cod SQL care se efectuează în mod repetat, proceduri stocate pot fi mai rapid. Acestea sunt analizate și optimizate atunci când sunt executate, și o versiune compilată de procedura stocată rămâne într-o memorie cache pentru o utilizare ulterioară. Acest lucru înseamnă stocate procedură nu trebuie să fie reparsed și reoptimized cu fiecare utilizare, care rezultă în mult mai repede ori de execuție.
O operațiune care necesită sute de linii de Transact-SQL cod poate fi realizată printr-o singură declarație în care se execută codul într-o procedură, mai degrabă decât de a trimite sute de linii de cod în rețea.
Utilizatorilor li se poate acorda permisiunea de a executa o procedură stocată chiar dacă nu au permisiunea de a executa procedura de's situațiilor direct.
În SQL Server avem diferite tipuri de proceduri stocate:
Sistem de proceduri stocate
Definite de utilizator proceduri stocate
Proceduri stocate extinse
Sistem-proceduri stocate sunt stocate în baza de date master și acestea încep cu o sp_
prefix. Aceste proceduri pot fi utilizate pentru a efectua o varietate de sarcini pentru a sprijini SQL Server-funcții pentru aplicație externă apeluri în tabelele de sistem
Exemplu: sp_helptext [StoredProcedure_Name]
Definite de utilizator proceduri stocate sunt de obicei stocate într-o bază de date de utilizator și sunt de obicei proiectate pentru a finaliza sarcinile în baza de date de utilizator. În timp ce codificare aceste proceduri nu utilizați a sp_
prefix pentru că dacă vom folosi sp_
prefix în primul rând, se va verifica baza de date master, și apoi vine la definit de utilizator de bază de date.
Extins proceduri stocate sunt procedurile care funcțiile de apel de la fișiere DLL. În zilele noastre, proceduri stocate extinse sunt depreciate pentru motivul că ar fi mai bine să evitați utilizarea prelungită proceduri stocate.
În general, o procedură stocată este o "Funcția de SQL." au:
-- 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
Acesta este un T-SQL concentrat exemplu. Procedurile stocate pot executa cele mai multe declarații SQL, reveni scalar și tabel bazat pe valori, și sunt considerate a fi mai sigure, deoarece acestea împiedică atacuri SQL injection.
Cred că o situație ca asta,
NOTĂ:
O procedură stocată este folosit în principal pentru a efectua anumite sarcini pe o bază de date. De exemplu
O procedură stocată este nimic, dar un grup de instrucțiuni SQL compilate într-un singur plan de execuție.
Exemplu: crearea unei proceduri stocate
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE GetEmployee
@EmployeeID int = 0
AS
BEGIN
SET NOCOUNT ON;
SELECT FirstName, LastName, BirthDate, City, Country
FROM Employees
WHERE EmployeeID = @EmployeeID
END
GO
Altera sau de a modifica o procedură stocată:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE GetEmployee
@EmployeeID int = 0
AS
BEGIN
SET NOCOUNT ON;
SELECT FirstName, LastName, BirthDate, City, Country
FROM Employees
WHERE EmployeeID = @EmployeeID
END
GO
Drop sau șterge o procedură stocată:
DROP PROCEDURE GetEmployee
O procedură stocată este utilizat pentru a prelua date, modifica date, și șterge datele în tabelul bazei de date. Nu't nevoie pentru a scrie o comandă SQL de fiecare dată când doriți pentru a insera, actualiza sau șterge datele într-o bază de date SQL.
"Ce este o procedură stocată" este deja răspuns în alte posturi aici. Ceea ce voi posta este unul mai puțin cunoscut mod de a utiliza proceduri stocate. Este gruparea proceduri stocate " sau " numerotare proceduri stocate
.
Sintaxa De Referință
; numărul
ca pe acest
opțional, Un număr întreg, care este folosit pentru a grupa proceduri cu același nume. Aceste grupate proceduri poate fi aruncat împreună folosind o PICĂTURĂ de PROCEDURĂ declarație
Exemplu
CREATE Procedure FirstTest
(
@InputA INT
)
AS
BEGIN
SELECT 'A' + CONVERT(VARCHAR(10),@InputA)
END
GO
CREATE Procedure FirstTest;2
(
@InputA INT,
@InputB INT
)
AS
BEGIN
SELECT 'A' + CONVERT(VARCHAR(10),@InputA)+ CONVERT(VARCHAR(10),@InputB)
END
GO
Utilizare
exec FirstTest 10
exec FirstTest;2 20,30
Rezultat
O Altă Încercare
CREATE Procedure SecondTest;2
(
@InputA INT,
@InputB INT
)
AS
BEGIN
SELECT 'A' + CONVERT(VARCHAR(10),@InputA)+ CONVERT(VARCHAR(10),@InputB)
END
GO
Rezultat
Msg 2730, Nivel 11, 1 de Stat, Procedura SecondTest, Linia 1 [Lot Linia de Start 3] Nu se poate crea procedură 'SecondTest' cu un număr de grup de 2 pentru o procedură cu același nume și un număr de grup de 1 nu există în prezent în baza de date. Trebuie să execute CREA PROCEDURĂ 'SecondTest';1 în primul rând.
Bibliografie:
ATENȚIE
O procedură stocată este o precompilate set de una sau mai multe instrucțiuni SQL care efectua unele sarcini specifice.
O procedură stocată ar trebui să fie executate sta singur, folosind "EXEC"
O procedură stocată poate reveni de mai multe parametri
O procedură stocată poate fi folosit pentru a pune în aplicare transact
O procedură stocată este o colecție numită de instrucțiuni SQL și logica de procedură nu.e, elaborate, verificate și stocate în serverul de baze de date. O procedură stocată este de obicei tratate ca alte obiecte bază de date și controlate prin server mecanism de securitate.
În Proceduri Stocate declarații sunt scrise doar o singură dată și de a reduce traficul de rețea între clienți și servere. De asemenea, putem evita Atacuri Sql injection.
Într-un SGBD, o procedură stocată este un set de instrucțiuni SQL cu un nume atribuite ca's stocate în baza de date în compilat, astfel încât acesta poate fi împărtășită de un număr de programe.
Utilizarea de o procedură stocată poate fi de ajutor în
Oferind un acces controlat la date (utilizatori finali numai pot introduce sau modifica date, dar poate't scrie proceduri)
Asigurarea integrității datelor (datele ar fi intrat într-o manieră coerentă) și
Îmbunătățește productivitatea (declarațiile de o procedură stocată trebuie să fie scrise o singură dată)
pentru simplu,
Proceduri stocate sunt Programe Stocate, Un program/funcție stocate în baza de date.
Fiecare program stocat conține un corp, care constă dintr-o instrucțiune SQL. Această declarație poate fi o instrucțiune compusă alcătuită din mai multe declarații separate prin punct și virgulă (;) de caractere.
CREATE PROCEDURE dorepeat(p1 INT)
BEGIN
SET @x = 0;
REPEAT SET @x = @x + 1; UNTIL @x > p1 END REPEAT;
END;
Proceduri stocate în SQL Server poate accepta parametri de intrare și returnează valori multiple de parametrii de ieșire; în SQL Server, proceduri stocate program declarații pentru a efectua operațiuni în baza de date și returnează o valoare a statutului la o procedură de asteptare sau de lot.
Beneficiile de a utiliza proceduri stocate în SQL Server
Acestea permit modular de programare. Acestea permit executarea mai rapidă. Ele pot reduce traficul în rețea. Ele pot fi folosite ca un mecanism de securitate.
Aici este un exemplu de o procedură stocată care are un parametru, se execută o interogare și a returna un rezultat. În special, procedura stocată acceptă BusinessEntityID ca un parametru și folosește acest lucru pentru a se potrivi cheia primară a Umane.Tabel angajat să se întoarcă solicitate de angajat.
> create procedure HumanResources.uspFindEmployee `*<<<---Store procedure name`*
@businessEntityID `<<<----parameter`
as
begin
SET NOCOUNT ON;
Select businessEntityId, <<<----select statement to return one employee row
NationalIdNumber,
LoginID,
JobTitle,
HireData,
From HumanResources.Employee
where businessEntityId [email protected] <<<---parameter used as criteria
end
Am învățat asta de la esențial.com...este foarte util.