sql >> Database teknologi >  >> RDS >> Sqlserver

Hvad er forskellen mellem en lagret procedure og en visning?

En visning repræsenterer en virtuel bord. Du kan samle flere tabeller i en visning og bruge visningen til at præsentere dataene, som om dataene kom fra en enkelt tabel.

En lagret procedure bruger parametre til at udføre en funktion... uanset om det er at opdatere og indsætte data eller returnere enkelte værdier eller datasæt.

Oprettelse af visninger og lagrede procedurer - har nogle oplysninger fra Microsoft om hvornår og hvorfor man skal bruge hver.

Lad os sige, at jeg har to borde:

  • tbl_user , med kolonner:user_id , user_name , user_pw
  • tbl_profile , med kolonner:profile_id , user_id , profile_description

Så hvis jeg finder mig selv i at forespørge fra disse tabeller MEGET... i stedet for at lave joinforbindelsen i HVER stykke SQL, ville jeg definere en visning som:

CREATE VIEW vw_user_profile
AS
  SELECT A.user_id, B.profile_description
  FROM tbl_user A LEFT JOIN tbl_profile B ON A.user_id = b.user_id
GO

Så hvis jeg ønsker at forespørge profile_description af user_id i fremtiden skal jeg kun:

SELECT profile_description FROM vw_user_profile WHERE user_id = @ID

Denne kode kunne bruges i en lagret procedure som:

CREATE PROCEDURE dbo.getDesc
    @ID int
AS
BEGIN
    SELECT profile_description FROM vw_user_profile WHERE user_id = @ID
END
GO

Så senere kan jeg ringe til:

dbo.getDesc 25

og jeg får beskrivelsen af ​​user_id 25, hvor 25 er din parameter.

Der er åbenbart mange flere detaljer, dette er bare den grundlæggende idé.



  1. Laravel kan ikke bruge mysql_real_escape_string()

  2. Linker php-formular til database

  3. hvordan får man den seneste post eller post med maks. tilsvarende dato for alle distinkte værdier i en kolonne i mysql?

  4. Forespørgsel om at tælle de forskellige ord af alle værdier i en kolonne