Aloittanut Tallennetut SQL Server

0 Comments

Mukaan: Greg Robidoux | Päivitetty: 2020-07-30 | Kommentit (15) | Liittyvät: Enemmän > Tallennetut

Ongelma

olen käyttänyt SQL Server jonkin aikaa, mutta kaikki koodi, joka on issuedagainst tietokanta on upotettu sovellus-koodi. Tiedän, että voit createstored menettelyjä, mutta en ole aivan varma, mistä aloittaa tai mitä minun täytyy loring toteuttaa tallennettu menettelyjä.,

liuos

tallennetut menettelytavat eivät ole mitään muuta kuin erä T-SQL-lausekkeita, jotka on tallennettu tietokantaan. Sen sijaan, että kysymyksiä useita lausuntoja fromyour sovellus voit antaa yhden komennon soittaa tallennettu menettely tehdä abatch työtä sen sijaan, että vain yksi ilmoitus. Lisäksi, koska koodi on tallennettu tietokantaan, voit antaa saman koodin uudelleen ja uudelleenjopa eri sovelluksista tai kyselyikkunasta. Voit aloittaa, loput tästä vinkistä tarkastelee somesample tallennettuja menettelyjä ja miten voit aloittaa ja rakentaa niitä.,

alla olevat esimerkit osoittavat, kuinka helppoa on luoda tallennettuja menettelyjä. Painopisteen näitä esimerkkejä käyttää theAdventureWorks tietokantaan, mutta theseexamples pitäisi olla aika straightforwardthat voit soveltaa näitä käsitteitä omia tietokantoja ja sovelluksia.

Esimerkki 1 – yksinkertainen tallennettu menettely

Tämä ensimmäinen esimerkki luo yksinkertainen tallennettu menettely, joka saa TOP 1 recordfrom Henkilö.Kontaktipöytä.

CREATE PROCEDURE uspGetContact AS SELECT TOP 1 ContactID, FirstName, LastName FROM Person.Contact 

Kun edellä on luotu käytä komentoa alla suorita tämä storedprocedure.,

EXEC uspGetContact

Tämä on tuloksia ensimmäisestä kyselystä.

Esimerkki 2 – tallennettu menettely, jossa parametri

Tämä seuraava esimerkki on muunnelma ensimmäinen esimerkki, mutta tällä kertaa addinga parametri, joka on siirtynyt menettely dynaamisesti valitse tietueet.Sen sijaan käyttää LUODA MENETTELY käytämme MUUTTAA MENETTELYÄ muuttaa procedurethat loimme Esimerkki 1 sen sijaan, että pudottamalla se ensin ja sitten se uudestaan.,

ALTER PROCEDURE uspGetContact @LastName NVARCHAR(50) AS SELECT TOP 1 ContactID, FirstName, LastName FROM Person.Contact WHERE LastName = @LastName 

alla on kaksi erilaista tapaa, joilla tallennettua menettelyä voidaan käyttää. Ensimmäinen examplejust läpäisee parametriarvon, jota haluamme käyttää, ja toinen esimerkki sisältää myös parametrin nimen sekä arvon. Voit suorittaa tallennetun menettelyn eitheronella näistä komennoista.

EXEC uspGetContact "Alberts" EXEC uspGetContact @LastName="Alberts"

Tämä on tuloksia ensimmäisestä kyselystä.,

Esimerkki 3 – tallennettu menettely, jossa parametri-ja output-parametri

tässä esimerkissä meillä on sekä input-parametri sekä OUTPUT-parametri.Ulostuloparametria käytetään siirtämään Takaisin ContactID, että etsimme tallennetussa menettelyssä. Tämä lähtö parametri on sitten käyttää valitsemaan saada ContactID, Etunimi ja Sukunimi sekä osoite-tietueita thisperson.,

Jälleen olemme muuttamalla tallennettu menettely uspGetContact ja sitten toiseksi olemme käynnissä seuraava joukko-koodi, joka suoritetaan menettelyn uspGetContact ja thenbased palauttaa arvon se saa, se on myös kyselyn henkilön nimi ja addressinfo.

ALTER PROCEDURE uspGetContact @LastName NVARCHAR(50), @ContactID INT output AS SELECT TOP 1 @ContactID = c.ContactID FROM HumanResources.Employee a INNER JOIN HumanResources.EmployeeAddress b ON a.EmployeeID = b.EmployeeID INNER JOIN Person.Contact c ON a.ContactID = c.ContactID INNER JOIN Person.Address d ON b.AddressID = d.AddressID WHERE c.LastName = @LastName 

sen Jälkeen, kun tallennettu menettely on muutettu suorita alla lohkon koodi. Tämä toteuttaa edellä tallennetun menettelyn ja jos Contactidilla on arvo, se palauttaa myös henkilö-ja osoitetiedot.

DECLARE @ContactID INT SET @ContactID = 0 EXEC uspGetContact @LastName="Smith", @ OUTPUT IF @ContactID <> 0 BEGIN SELECT ContactID, FirstName, LastName FROM Person.Contact WHERE ContactID = @ContactID SELECT d.AddressLine1, d.City, d.PostalCode FROM HumanResources.Employee a INNER JOIN HumanResources.EmployeeAddress b ON a.EmployeeID = b.EmployeeID INNER JOIN Person.Contact c ON a.ContactID = c.ContactID INNER JOIN Person.Address d ON b.AddressID = d.AddressID WHERE c.ContactID = @ContactID END 

Tämä on tuloksia.,

Esimerkki 4 – tallennettu menettely käyttää RAISERROR lausunto

tässä esimerkissä olemme yhdistämällä kaksi askelta Esimerkki 3 yhdeksi tallennettu menettely.Ensimmäinen askel on saada ContactID ja sitten toinen osa procedurewill haku henkilön nimi ja osoite info. Lisäsimme koodiin myös käyttääksemme theRAISERROR-lausumaa palauttaaksemme virheen, jos tietueita ei löydy.

tätä ajetaan sen jälkeen kaksi kertaa, jotta voidaan osoittaa, miltä se näyttää, kun tietoja löytyy ja kun Tietoja ei löydy., RAISERROR-lausumaa voidaan käyttää ohjaamaan, miten sovelluksesi ei anna tietoja tai muuta virhettä, joka voi tapahtua.

ALTER PROCEDURE uspGetContact @LastName NVARCHAR(50) AS DECLARE @ContactID INT SELECT TOP 1 @ContactID = c.ContactID FROM HumanResources.Employee a INNER JOIN HumanResources.EmployeeAddress b ON a.EmployeeID = b.EmployeeID INNER JOIN Person.Contact c ON a.ContactID = c.ContactID INNER JOIN Person.Address d ON b.AddressID = d.AddressID WHERE c.LastName = @LastName IF @@ROWCOUNT > 0 BEGIN SELECT ContactID, FirstName, LastName FROM Person.Contact WHERE ContactID = @ContactID SELECT d.AddressLine1, d.City, d.PostalCode FROM HumanResources.Employee a INNER JOIN HumanResources.EmployeeAddress b ON a.EmployeeID = b.EmployeeID INNER JOIN Person.Contact c ON a.ContactID = c.ContactID INNER JOIN Person.Address d ON b.AddressID = d.AddressID WHERE c.ContactID = @ContactID END ELSE BEGIN RAISERROR ("No record found",10,1) END 

EXEC uspGetContact @LastName="Walters"

Tämä on tuloksia.

EXEC uspGetContact @LastName="Job"

Tämä on tuloksia, kun mitään tietoja ei löytynyt.

Esimerkki 5 – tallennettu menettely, jossa on erillinen soittamalla tallennettu menettely

Tässä on toinen esimerkki, jossa meillä on kaksi tallennettu menettelyjä., Ensimmäinen storedprocedure uspFindContact hakuja ensimmäinen levy, joka on osoitteen tallentaa ja sitten palauttaa ContactID kutsuvan tallennettu menettely uudelleen näyttö theperson ja osoite info.

CREATE PROCEDURE uspFindContact @LastName NVARCHAR(50), @ContactID INT output AS SELECT TOP 1 @ContactID = c.ContactID FROM HumanResources.Employee a INNER JOIN HumanResources.EmployeeAddress b ON a.EmployeeID = b.EmployeeID INNER JOIN Person.Contact c ON a.ContactID = c.ContactID INNER JOIN Person.Address d ON b.AddressID = d.AddressID WHERE c.LastName = @LastName 

alla Oleva koodi ei alter of uspGetContact tallennettu menettely, joka callsuspFindContact ja palauttaa tietuejoukkoja.

ALTER PROCEDURE uspGetContact @LastName NVARCHAR(50) AS DECLARE @ContactID INT SET @ContactID = 0 EXEC uspFindContact @, @ OUTPUT IF @ContactID <> 0 BEGIN SELECT ContactID, FirstName, LastName FROM Person.Contact WHERE ContactID = @ContactID SELECT d.AddressLine1, d.City, d.PostalCode FROM HumanResources.Employee a INNER JOIN HumanResources.EmployeeAddress b ON a.EmployeeID = b.EmployeeID INNER JOIN Person.Contact c ON a.ContactID = c.ContactID INNER JOIN Person.Address d ON b.AddressID = d.AddressID WHERE c.ContactID = @ContactID END ELSE BEGIN RAISERROR ("No record found",10,1) END 
EXEC uspGetContact @LastName="Walters"

Tämä on tuloksia.

EXEC uspGetContact @LastName="Job"

Tämä on tuloksia.,

Esimerkki 6. – tallennetut menettely huomautuksia

Tämä viimeinen esimerkki vie uspGetContact tallennetut menettely ja lisää commentsto koodi, jotta voit nähdä, miten kommentteja työn kuluessa tallennettu menettely.

Kommentit voidaan tehdä kahdella tavalla

  1. käyttäen …
  2. käyttää/* aloittaa kommentti-lohko ja */ lopettaa kommentti-lohko.

Muut kuin, että mikään muu ei ole muuttunut tallennettu menettely.,

ALTER PROCEDURE uspGetContact @LastName NVARCHAR(50) AS /* This is a sample stored procedure to show how comments work within a stored procedure */ -- declare variable DECLARE @ContactID INT -- set variable value SET @ContactID = 0 -- execute stored proc and return ContactID value EXEC uspFindContact @, @ OUTPUT -- if ContactID does not equal 0 then return data else return error IF @ContactID <> 0 BEGIN SELECT ContactID, FirstName, LastName FROM Person.Contact WHERE ContactID = @ContactID SELECT d.AddressLine1, d.City, d.PostalCode FROM HumanResources.Employee a INNER JOIN HumanResources.EmployeeAddress b ON a.EmployeeID = b.EmployeeID INNER JOIN Person.Contact c ON a.ContactID = c.ContactID INNER JOIN Person.Address d ON b.AddressID = d.AddressID WHERE c.ContactID = @ContactID END ELSE BEGIN RAISERROR ("No record found",10,1) END 

Nämä ovat melko yksinkertaisia esimerkkejä, mutta toivottavasti tämä antaa sinulle käsityksen siitä, howeasy se on luoda tallennetut SQL Server. Jos voit suorittaa valitun statementin joko kyselyikkunasta tai sovelluksestasi, voit yhtä helposti suorittaa muokatun menettelyn kuin yllä.,

Seuraavaksi
  • Jos et ole jo, käytetään tallennettu menettelyjä, toivottavasti tämä antaa sinulle käsityksen siitä, mitä sinun tarvitsee tehdä, jotta alkaa käyttää niitä
  • Kuten edellä on mainittu, nämä ovat melko yksinkertaisia esimerkkejä, mutta vain noin mitään voit tehdä erän lausuntoja voidaan yhdistää tallennetut menettely ja sitten käyttää uudestaan ja uudestaan teidän sovelluksia.,
  • tutustu thestored menettely tutorial lisää esimerkkejä

Viimeksi Päivitetty: 2020-07-30

author
Greg Robidoux on Presidentti Edgewood Ratkaisuja ja co-perustaja MSSQLTips.com.
Näytä kaikki vinkkejä
niihin Liittyvät Resurssit

  • Lisää Tietokannan Kehittäjä Vinkkejä…


Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *