sql >> Databasteknik >  >> RDS >> Sqlserver

Vad är skillnaden mellan en lagrad procedur och en vy?

En vy representerar en virtuell tabell. Du kan slå samman flera tabeller i en vy och använda vyn för att presentera data som om data kom från en enda tabell.

En lagrad procedur använder parametrar för att utföra en funktion... oavsett om det är att uppdatera och infoga data, eller returnera enstaka värden eller datamängder.

Skapa vyer och lagrade procedurer - har lite information från Microsoft om när och varför de ska användas.

Säg att jag har två bord:

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

Så om jag kommer på mig själv med att fråga MYCKET från de tabellerna... istället för att göra joinen i VARJE SQL-bit, skulle jag definiera en vy 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

Alltså, om jag vill fråga profile_description av user_id i framtiden behöver jag bara:

SELECT profile_description FROM vw_user_profile WHERE user_id = @ID

Den koden kan användas i en lagrad procedur som:

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

Så senare kan jag ringa:

dbo.getDesc 25

och jag får beskrivningen för user_id 25, där 25 är din parameter.

Det finns uppenbarligen mycket mer detaljer, detta är bara grundidén.



  1. Konvertera Oracle-frågeutdata till json (Oracle / NodeJS)

  2. Hur man får värdena för kolumn i SQL kommaseparerad

  3. Hur man sparar en färdig polygon poäng leaflet.draw till mysql-tabellen

  4. optimera fråga med datumtypfält i mysql