Skip to main content

Creació de procediments emmagatzemats per al vostre servidor SQL

Anonim

Microsoft SQL Server proporciona el mecanisme de procediments emmagatzemats per simplificar el procés de desenvolupament de la base de dades agrupant les instruccions de Transact-SQL en blocs manejables. Els procediments emmagatzemats són apreciats per la majoria dels desenvolupadors de SQL Server que troben l'eficiència i els beneficis de seguretat que obtenen valen la inversió anticipada a temps.

Beneficis d'utilitzar procediments emmagatzemats

Per què un desenvolupador hauria d'utilitzar els procediments emmagatzemats?

Aquests són els avantatges clau d'aquesta tecnologia:

  • Execució precompilada: SQL Server recopila cada procediment emmagatzemat una vegada i torna a utilitzar el pla d'execució. Això resulta en un gran impuls de rendiment quan els procediments emmagatzemats es diuen repetidament.
  • Reducció del trànsit del client / servidor: Si l'ample de banda de la xarxa és una preocupació en el vostre entorn, us agradarà saber que els procediments emmagatzemats poden reduir consultes SQL llargs a una sola línia que es transmet a través del cable.
  • Reutilització eficaç de codi i abstracció de programació: Els procediments emmagatzemats poden ser utilitzats per diversos usuaris i programes de clients. Si els utilitza de forma planificada, trobareu que el cicle de desenvolupament porta menys temps.
  • Controls de seguretat millorats: Podeu concedir permís als usuaris per executar un procediment emmagatzemat independentment dels permisos de la taula subjacent.

Els procediments emmagatzemats són similars a les funcions definides per l'usuari, però hi ha diferències subtils.

Estructura

Els procediments emmagatzemats són similars a les construccions que es veuen en altres llenguatges de programació.

Accepten dades en forma de paràmetres d'entrada que s'especifiquen a l'execució. Aquests paràmetres d'entrada (si s'apliquen) s'utilitzen en l'execució d'una sèrie d'afirmacions que produeixen algun resultat. Aquest resultat es torna a l'entorn de trucada mitjançant l'ús d'un conjunt de registres, paràmetres de sortida i un codi de retorn.

Això pot sonar com un mos, però trobareu que els procediments emmagatzemats són bastant senzills.

Exemple

Fem un cop d'ull a un exemple pràctic relacionat amb la taula anomenada inventari que es mostra a la part inferior d'aquesta pàgina. Aquesta informació s'actualitza en temps real, i els gerents de magatzem comproven constantment els nivells de productes emmagatzemats al seu magatzem i disponibles per a l'enviament. En el passat, cada gestor executaria consultes similars a les següents:

SELECCIONAR producte, quantitatFROM InventoryWHERE Warehouse = 'FL'

Això va donar com a resultat un rendiment ineficient en SQL Server. Cada vegada que un gestor de magatzems va executar la consulta, el servidor de bases de dades es va veure obligat a recompilar la consulta i executar-la des de zero. També va exigir que l'administrador del magatzem tingués coneixement de SQL i els permisos adequats per accedir a la informació de la taula.En canvi, el procés es pot simplificar mitjançant l'ús d'un procediment emmagatzemat. Aquest és el codi d'un procediment anomenat sp_GetInventory que recupera els nivells d'inventari d'un magatzem determinat.

CREA PROCEDIMENT sp_GetInventory@location varchar (10)ASSELECCIONAR producte, quantitatFROM InventoryWHERE Warehouse = @ ubicació

El gestor de magatzems de Florida pot accedir als nivells d'inventari mitjançant l'emissió de la comanda:

EXECUTE sp_GetInventory 'FL'

El gestor de magatzems de Nova York pot utilitzar el mateix procediment emmagatzemat per accedir a l'inventari d'aquesta àrea:

EXECUTE sp_GetInventory 'NY'

Per descomptat, aquest és un exemple senzill, però els beneficis de l'abstracció es poden veure aquí. El gestor de magatzems no necessita comprendre SQL o el funcionament intern del procediment. Des del punt de vista del rendiment, el procediment emmagatzemat fa meravelles. SQL Server crea un pla d'execució una vegada i després el reutilitza connectant els paràmetres adequats en el moment de l'execució.Ara que heu après els avantatges dels procediments emmagatzemats, sortiu i utilitzeu-los.

Proveu alguns exemples i mesureu les millores de rendiment aconseguides: us sorprendrà!

Taula d'inventari

IDProducteMagatzemQuantitat
142Mongetes verdesNY100
214PèsolsFL200
825Blat de moroNY140
512Mongetes de LimaNY180
491TomàquetsFL80
379SíndriaFL85