Che cos’è una procedura memorizzata?

Dividerò questa risposta in due parti.

Non la definizione esatta, ma solo una panoramica di base sulle Stored procedure.

Le procedure memorizzate sono fondamentalmente un insieme di istruzioni SQL, che possono essere salvate nel database con un nome e possono essere chiamate per ottenere i risultati desiderati. Una procedura memorizzata può contenere una singola query sql o più query sql in base alla complessità del requisito.

Vantaggi delle procedure memorizzate.

  • Migliora le prestazioni del database . Come ? Bene, quando SQL esegue qualsiasi query, rappresenta il modo più efficiente di elaborare la query e crea un piano di esecuzione. Il tempo impiegato per creare il piano di esecuzione è sostanzialmente il tempo necessario per eseguire la query. Pertanto, quando vengono eseguite query sql separate dall’interno dell’applicazione, ogni volta che viene creato il piano. Ma quando viene eseguita una Stored Procedure, il piano creato la prima volta durante la sua esecuzione viene archiviato nella memoria. Quindi la prossima volta che questa stessa Stored Procedure viene eseguita, non crea un nuovo piano. Prende il piano archiviato nella memoria e lo riutilizza. Quindi, ottieni una rapida esecuzione e migliori prestazioni del database.
  • Riutilizzabilità. Come? Supponiamo che tu abbia una pagina che elenca i dipendenti che lavorano nell’azienda. Quindi scrivi una query inline nella tua applicazione “Seleziona * da tblEmployee”. Giusto. Ora arriva un nuovo requisito, dice che selezionando un valore a discesa, dovrebbe elencare tutti i dipendenti a tempo pieno. Quindi, al cambio del menu a discesa, scrivi un’altra query. “Seleziona * da tblEmployee dove IsFulltimeEmp = ” Ancora abbastanza giusto. Ora un altro requisito arriva dopo qualche tempo. Un altro filtro, filtrare i dipendenti che si uniscono in base alla data selezionata. Quindi, in sostanza, stai aggiungendo sempre più query in linea alla stessa tabella con la semplice modifica dei filtri. D’altra parte, è possibile creare una Stored procedure. Tale procedura memorizzata può accettare alcuni parametri in base ai criteri di ricerca. E in base a tali valori di parametro, è possibile scrivere le query di ricerca all’interno della procedura memorizzata stessa. Domani, se vengono aggiunti altri filtri a questo scenario, tutto ciò che devi fare è apportare modifiche alla Stored Procedure e sarai ordinato. Ottieni riusabilità e un sacco di tempo risparmiando, poiché devi solo occuparti della SP invece di tutte quelle query in linea scritte qua e là. Di seguito potrebbe essere un ottimo esempio della funzionalità simile

Creazione di stored procedure con ricerca dinamica (filtro)

  • Facile da mantenere. Come? Supponiamo che l’applicazione sia utilizzata da più client. Il tuo database è condiviso tra loro. E vuoi apportare una modifica ad alcune funzionalità. Avevi scritto una query incorporata nella tua applicazione e ora desideri modificarla. Quindi lo cambi sul tuo sistema e poi passi alla distribuzione. Quindi dovrai costruirlo, compilare, pubblicare e distribuire la dll a tutti i client. Questo è dolore nel culo. Supponiamo che tu abbia una procedura memorizzata anziché questa. Modificare la procedura memorizzata nel database ed eseguirla. Le modifiche vengono apportate e riflesse tra i tuoi clienti. Anche se non condividono il database, puoi semplicemente inviare loro il SP aggiornato e tutto ciò che hanno fatto è incollarlo nel loro server SQL e premere F5. La manutenzione è facile e la sostituzione senza problemi.

Procedura di archiviazione :

Le procedure memorizzate possono accedere o modificare i dati in un database, ma non sono legate a uno specifico database o oggetto, il che offre numerosi vantaggi.

Link utile: articolo di dieci .NET – Da non perdere

Vantaggi dell’utilizzo di stored procedure:

Una procedura memorizzata fornisce un importante livello di sicurezza tra l’interfaccia utente e il database. Supporta la sicurezza attraverso i controlli di accesso ai dati perché gli utenti finali possono inserire o modificare i dati, ma non scrivere procedure.

Una procedura memorizzata preserva l’integrità dei dati poiché le informazioni vengono immesse in modo coerente. Migliora la produttività perché le istruzioni in una stored procedure devono essere scritte una sola volta.

Ottieni un’idea più semplice e più semplice di .NET – CLICCA QUI

La Stored procedure in SQL Server può essere definita come l’insieme di un gruppo logico di istruzioni SQL raggruppate per eseguire un’attività specifica. Ci sono molti vantaggi nell’uso di una procedura memorizzata. Il vantaggio principale dell’utilizzo di una procedura memorizzata è che aumenta le prestazioni del database. Gli altri vantaggi dell’utilizzo della Stored Procedure sono riportati di seguito.

Supponiamo che esista una tabella chiamata tbl_Students la cui struttura è riportata di seguito:

Nascondi il codice di copia

CREA TABELLA tbl_Students

(

[Studentid] [int] IDENTITY (1,1) NOT NULL,

[Nome] [nvarchar] (200) NOT NULL,

[Cognome] [nvarchar] (200) NULL,

[Email] [nvarchar] (100) NULL

)

Supporto inseriamo i seguenti dati nella tabella sopra:

Nascondi il codice di copia

Inserisci in tbl_Students (nome, cognome, email)

Valori (‘Vivek’, ‘Johari’, ‘ [e-mail protetta] ‘)

Inserisci in tbl_Students (nome, cognome, email)

Valori (‘Pankaj’, ‘Kumar’, ‘ [e-mail protetta] ‘)

Inserisci in tbl_Students (nome, cognome, email)

Valori (‘Amit’, ‘Singh’, ‘ [e-mail protetto] ‘)

Inserisci in tbl_Students (nome, cognome, email)

Valori (“Manish”, “Kumar”, ” [email protetti] “)

Inserisci in tbl_Students (nome, cognome, email)

Valori (‘Abhishek’, ‘Singh’, ‘ [e-mail protetto] ‘)

Ora, durante la scrittura di una Stored Procedure, il primo passo sarà quello di scrivere l’istruzione Create Procedure come prima istruzione:

Nascondi il codice di copia

Creare procedura Nome procedura

(

Parametri di input,

Parametri di output (se richiesto)

)

Come

Inizio

Istruzione SQL utilizzata nella procedura memorizzata

Fine

Supponiamo ora di dover creare una Stored Procedure che restituirà un nome studente il cui studentid viene assegnato come parametro di input alla procedura memorizzata. Quindi, la Stored Procedure sarà:

Nascondi il codice di copia

/ * Getstudentname è il nome della procedura memorizzata * /

Crea PROCEDURE Getstudentname (

@studentid INT: parametro di input, Studentid dello studente

)

COME

INIZIO

SELEZIONA Nome + ” + Cognome DA tbl_Students DOVE [e-mail protetta]

FINE

Possiamo anche raccogliere il nome dello studente nel parametro di output della Stored Procedure. Per esempio:

Nascondi il codice di copia

/ *

GetstudentnameInOutputVariable è il nome della procedura memorizzata che

utilizza la variabile di output @Studentname per raccogliere i ritorni dei nomi degli studenti da

procedura memorizzata

* /

Creare PROCEDURA GetstudentnameInOutputVariable

(

@studentid INT, parametro di input, Studentid dello studente

@studentname VARCHAR (200) OUT – Il parametro Out è stato dichiarato con l’aiuto della parola chiave OUT

)

COME

INIZIO

SELECT @ studentname = Nome + ” + Cognome DA tbl_Students DOVE [e-mail protetta]

FINE

Le stored procedure sono un batch di istruzioni SQL che possono essere eseguite in un paio di modi. La maggior parte dei principali DBM supporta procedure memorizzate; tuttavia, non tutti lo fanno. Sarà necessario verificare con la documentazione di aiuto DBMS particolare per specifiche. Come ho più familiarità con SQL Server lo userò come i miei campioni.

Per creare una procedura memorizzata la sintassi è abbastanza semplice:

CREATE PROCEDURE .

COME

Quindi per esempio:

CREATE PROCEDURE Users_GetUserInfo

@login nvarchar (30) = null

COME

SELEZIONA * da [Utenti] WHERE ISNULL (@ login, login) = login

Un vantaggio delle procedure memorizzate è che è possibile centralizzare la logica di accesso ai dati in un unico posto che è quindi facile da ottimizzare per i DBA. Le procedure memorizzate hanno anche un vantaggio in termini di sicurezza in quanto è possibile concedere diritti di esecuzione a una procedura memorizzata, ma l’utente non dovrà disporre delle autorizzazioni di lettura / scrittura sulle tabelle sottostanti. Questo è un buon primo passo contro l’iniezione SQL.

Le procedure memorizzate presentano degli svantaggi, fondamentalmente la manutenzione associata all’operazione CRUD di base. Diciamo per ogni tabella che hai un Inserisci, Aggiorna, Elimina e almeno una selezione basata sulla chiave primaria, ciò significa che ogni tabella avrà 4 procedure. Ora prendi un database di dimensioni decenti di 400 tabelle e hai 1600 procedure! E questo presuppone che non hai duplicati che probabilmente avrai.

È qui che utilizzare un ORM o qualche altro metodo per generare automaticamente le operazioni CRUD di base ha un sacco di meriti.

Una procedura memorizzata in SQL Server è un gruppo di una o più istruzioni Transact-SQL o un riferimento a un metodo CLR (common runtime language) di Microsoft .NET Framework. Le procedure assomigliano a costrutti in altri linguaggi di programmazione perché possono:

Accettare i parametri di input e restituire più valori sotto forma di parametri di output al programma chiamante.

Contiene istruzioni di programmazione che eseguono operazioni nel database. Questi includono la chiamata di altre procedure.

Restituisce un valore di stato a un programma chiamante per indicare l’esito positivo o negativo (e il motivo dell’errore).

Vantaggi dell’utilizzo di stored procedure

L’elenco seguente descrive alcuni vantaggi dell’utilizzo delle procedure.

Riduzione del traffico di rete server / client

I comandi in una procedura vengono eseguiti come un singolo batch di codice. Ciò può ridurre significativamente il traffico di rete tra il server e il client poiché solo la chiamata per eseguire la procedura viene inviata attraverso la rete. Senza l’incapsulamento del codice fornito da una procedura, ogni singola riga di codice dovrebbe attraversare la rete.

Maggiore sicurezza

Più utenti e programmi client possono eseguire operazioni su oggetti di database sottostanti attraverso una procedura, anche se utenti e programmi non dispongono di autorizzazioni dirette su tali oggetti sottostanti. La procedura controlla quali processi e attività vengono eseguiti e protegge gli oggetti del database sottostante. Ciò elimina la necessità di concedere autorizzazioni a livello di singolo oggetto e semplifica i livelli di sicurezza.

La clausola EXECUTE AS può essere specificata nell’istruzione CREATE PROCEDURE per consentire la rappresentazione di un altro utente o consentire agli utenti o alle applicazioni di eseguire determinate attività del database senza la necessità di autorizzazioni dirette sugli oggetti e sui comandi sottostanti. Ad esempio, alcune azioni come TRUNCATE TABLE non dispongono di autorizzazioni conciliabili. Per eseguire TRUNCATE TABLE, l’utente deve disporre delle autorizzazioni ALTER sulla tabella specificata. Concedere a un utente le autorizzazioni ALTER su una tabella potrebbe non essere ideale perché l’utente disporrà effettivamente di autorizzazioni ben oltre la possibilità di troncare una tabella. Incorporando l’istruzione TRUNCATE TABLE in un modulo e specificando che quel modulo viene eseguito come utente con autorizzazioni per modificare la tabella, è possibile estendere le autorizzazioni per troncare la tabella all’utente a cui si concedono le autorizzazioni EXECUTE sul modulo.

Quando si chiama una procedura in rete, è visibile solo la chiamata per eseguire la procedura. Pertanto, gli utenti malintenzionati non possono visualizzare i nomi degli oggetti di tabella e database, incorporare le proprie istruzioni Transact-SQL o cercare dati critici.

L’uso dei parametri della procedura consente di evitare attacchi di iniezione SQL. Poiché l’input dei parametri viene trattato come un valore letterale e non come un codice eseguibile, è più difficile per un utente malintenzionato inserire un comando nelle istruzioni Transact-SQL all’interno della procedura e compromettere la sicurezza.

Le procedure possono essere crittografate, contribuendo a offuscare il codice sorgente. Per ulteriori informazioni, vedere Crittografia di SQL Server.

Riutilizzo del codice

Il codice per qualsiasi operazione di database ripetitiva è il candidato perfetto per l’incapsulamento nelle procedure. Ciò elimina le riscritture inutili dello stesso codice, diminuisce l’incoerenza del codice e consente al codice di accedere ed eseguire il codice da qualsiasi utente o applicazione in possesso delle autorizzazioni necessarie.

Manutenzione più semplice

Quando le applicazioni client chiamano le procedure e mantengono le operazioni del database nel livello dati, solo le procedure devono essere aggiornate per eventuali modifiche nel database sottostante. Il livello dell’applicazione rimane separato e non deve sapere come apportare modifiche a layout, relazioni o processi del database.

Prestazione migliorata

Per impostazione predefinita, una procedura viene compilata la prima volta che viene eseguita e crea un piano di esecuzione che viene riutilizzato per le successive esecuzioni. Poiché il processore di query non deve creare un nuovo piano, in genere richiede meno tempo per elaborare la procedura.

Se sono state apportate modifiche significative alle tabelle o ai dati a cui fa riferimento la procedura, il piano precompilato può effettivamente rallentare l’esecuzione della procedura. In questo caso, ricompilare la procedura e forzare un nuovo piano di esecuzione può migliorare le prestazioni.

Le Stored procedure sono un insieme di query precompilate. Con la parola “Stored procedure” intendiamo l’insieme di istruzioni che vengono compilate solo per prime al momento della prima volta che vengono compilate, archiviate e salvate su SQL Server per essere utilizzate in futuro, vengono chiamate Stored procedure.

Invece di scrivere query sql di grandi dimensioni in Code, le query verranno eseguite più volte al caricamento della pagina. I programmatori utilizzano le procedure memorizzate e le usano in quella pagina. Poiché la Stored Procedure viene compilata solo la prima volta quando vengono eseguite e utilizza l’approccio dll in modo che non sia necessario eseguire ripetutamente la Stored procedure. È l’approccio migliore e più veloce per recuperare record di grandi dimensioni

Link di riferimento

Stored procedure in SQL

Differenza tra viste e StoredProcedure Sql

GridView CRUD: selezionare Inserisci Modifica Aggiorna Elimina utilizzando la procedura memorizzata singola in ASP.Net

Una procedura memorizzata (denominata anche proc , storp , sproc , StoPro , StoredProc , StoreProc , sp o SP ) è una subroutine disponibile per le applicazioni che accedono a un database relazionale. le stored procedure possono restituire set di risultati, ovvero i risultati di un’istruzione SELECT . Tali set di risultati possono essere elaborati utilizzando i cursori, mediante altre stored procedure, associando un localizzatore di set di risultati o mediante applicazioni. Le stored procedure possono contenere anche variabili dichiarate per l’elaborazione di dati e cursori che consentono di scorrere più righe in una tabella. L’implementazione esatta e corretta delle procedure memorizzate varia da un sistema di database all’altro. La maggior parte dei principali fornitori di database li supporta in qualche modo. A seconda del sistema di database, le procedure memorizzate possono essere implementate in una varietà di linguaggi di programmazione, ad esempio SQL, Java, C o C ++. La crescente adozione di procedure memorizzate ha portato all’introduzione di elementi procedurali nel linguaggio SQL in SQL: 1999 e SQL: standard 2003 nella parte SQL / PSM. Ciò ha reso SQL un linguaggio di programmazione indispensabile.

Insieme di batch di query ben organizzati che possono essere eseguiti per recuperare i dati dal database per un’applicazione specifica.

Una volta compilato, il piano di esecuzione verrà memorizzato nella cache e può essere riutilizzato. Non è necessario compilare ogni volta. La ricompilazione del codice è soddisfatta.

Fare riferimento a questi collegamenti per avere un’idea generale delle procedure memorizzate.

  1. Esercitazione sulla procedura memorizzata di SQL Server
  2. SQL Server – Come scrivere una stored procedure in SQL Server
  3. Informazioni sulle procedure memorizzate – SQL essenziale

Buon apprendimento 🙂

Una procedura memorizzata, in generale, è un metodo che può contenere quasi qualsiasi query no o SQL. Sono fatti per svolgere più attività che non possono essere eseguite da una singola query.

Stored Procedures aiuta anche a rendere dinamiche le query passando valori ai parametri. Come eseguire le operazioni CRUD in SQL Server mostra come le semplici operazioni CRUD eseguite con le query possono essere eseguite anche con Stored procedure e questo le rende anche dinamiche.

In PL / SQL

La procedura è quella che esegue la procedura action.stored non è altro che l’archiviazione della procedura nel database.

che può essere riutilizzato chiamando tale procedura.

fornisce la procedura memorizzata

1.modularity

2.reusability

3.extensibility

4.maintainability

per esempio

se vogliamo scrivere una procedura per verificare se un determinato numero è pari o dispari

programma:

CREATE PROCEDURE EVEN_OR _ODD (N NUMBER)

È

INIZIO

SE MOD (N, 2) = 0

POI

STAMPA (‘ANCHE NUMERO’);

ALTRO

STAMPA (‘ODD NUMBER’);

FINISCI SE;

FINE;

se viene eseguito il codice precedente, questo viene archiviato nel database

→ exec EVEN_OR _ODD (10);

fornirà ANCHE NUMERO come output

per controllare un altro numero non è necessario correggere nuovamente quelle 10 righe di codice

basta usare la procedura memorizzata denominata EVEN_OR_ODD (numero) che fornirà un output pari o dispari, che ci farà risparmiare tempo.

possiamo usare questa procedura in qualsiasi ambiente chiamante o in qualsiasi procedura o funzione

se eventuali modifiche richieste alla procedura possono essere eseguite in questa singola posizione.

Una procedura memorizzata è un gruppo di istruzioni SQL compilate in un unico piano di esecuzione.
Le procedure memorizzate aiutano a raggiungere un’implementazione coerente della logica tra le applicazioni. Le istruzioni e la logica SQL necessarie per eseguire un’attività comunemente eseguita possono essere progettate, codificate e testate una volta in una procedura memorizzata. Ogni applicazione che deve eseguire tale attività può quindi semplicemente eseguire la procedura memorizzata. La codifica della logica aziendale in una singola procedura memorizzata offre anche un unico punto di controllo per garantire che le regole aziendali siano applicate correttamente.
Le procedure memorizzate possono anche migliorare le prestazioni. Molte attività sono implementate come una serie di istruzioni SQL.

La Stored Procedure è per SQL quali sono le funzioni per i codici 🙂

La procedura memorizzata in SQL Server può essere definita come l’insieme di un gruppo logico di istruzioni SQL raggruppate per eseguire un’attività specifica. Ci sono molti vantaggi nell’uso di una procedura memorizzata. Il vantaggio principale dell’utilizzo di una procedura memorizzata è che aumenta le prestazioni del database.

Per ulteriori informazioni, visitare il sito Impara a sviluppare con la rete di sviluppatori Microsoft.

Una procedura memorizzata è un insieme di istruzioni SQL (Structured Query Language) con un nome assegnato che è memorizzato nel database in forma compilata in modo che possa essere condiviso da un numero di programmi.

Quindi, se si pensa a una query che si scrive più e più volte, invece di dover scrivere quella query ogni volta che si salverà come una procedura memorizzata e quindi si chiama semplicemente la procedura memorizzata per eseguire il codice SQL salvato come parte di la procedura memorizzata.

La procedura di archiviazione è utilizzata principalmente per

  • Ottieni set di risultati DB da alcune logiche aziendali sui dati.
  • Esegue più operazioni DB su una singola chiamata.
  • Per migrare i dati da una tabella a un’altra tabella.

Esempio

UTILIZZARE AdventureWorks2008R2;
PARTIRE
CREA PROCEDURA dbo.sp_who
COME
SELEZIONA Nome, Cognome DA Person.Person;
PARTIRE
EXEC sp_who;
EXEC dbo.sp_who;
PARTIRE
PROCEDURA DROP dbo.sp_who;
PARTIRE

Per saperne di più sulla procedura memorizzata e sui suoi vantaggi, visitare: Vantaggi dell’utilizzo di stored procedure in SQL Server

È semplice .Il codice che hai scritto in SQL si chiama procedura. Lo memorizzeremo in modo da poterlo riutilizzare ogni volta che è necessario, quindi lo chiamiamo come procedura memorizzata.