Documente Academic
Documente Profesional
Documente Cultură
2)
-- Crearea procedurii stocate
CREATE PROCEDURE SelectDistinctProducatorByTip
@Tip NVARCHAR(50)
AS
BEGIN
-- Corpul procedurii
SELECT DISTINCT Producator
FROM produse
WHERE Tip = @Tip;
END;
3)
-- Crearea procedurii stocate
CREATE PROCEDURE SelectLaptop
@PretMinim INT,
@DimensiuneEcran INT
AS
BEGIN
-- Corpul procedurii
SELECT Model, Ram, Ecran
FROM pc_laptop.laptop_uri
WHERE Pret > @PretMinim AND Ecran = @DimensiuneEcran;
END;
4)
-- Crearea procedurii stocate
CREATE PROCEDURE SelectImprimanteByColor
@Color NVARCHAR(50)
AS
BEGIN
-- Corpul procedurii
SELECT *
FROM copiatoare.imprimante
WHERE Color = @Color;
END;
5)
-- Crearea procedurii stocate
CREATE PROCEDURE SelectImprimanteByTip
@TipImprimanta NVARCHAR(50)
AS
BEGIN
-- Corpul procedurii
SELECT *
FROM copiatoare.imprimante
WHERE Tip = @TipImprimanta;
END;
6)
-- Crearea procedurii stocate
CREATE PROCEDURE SelectPcUriByHdCapacities
@CapacitateHd INT
AS
BEGIN
-- Corpul procedurii
SELECT *
FROM pc_laptop.pc_uri
WHERE Hd IN (8, 10, 14, 20);
END;
7)
-- Crearea procedurii stocate
CREATE PROCEDURE PcUriByCriteria
@MaxPret INT,
@TipCd NVARCHAR(50)
AS
BEGIN
-- Corpul procedurii
SELECT DISTINCT Model, Viteza, Cd
FROM pc_laptop.pc_uri
WHERE pret < @MaxPret AND (Cd = @TipCd OR Cd = '24x');
END;
8)
-- Crearea procedurii stocate
CREATE PROCEDURE SelectPcUriRAMHd
@RAM INT,
@HdCapacity INT
AS
BEGIN
-- Corpul procedurii
SELECT model, RAM, Hd
FROM pc_laptop.pc_uri
WHERE (RAM IN (@RAM) AND Hd IN (@HdCapacity));
END;
10)
-- Crearea procedurii stocate
CREATE PROCEDURE ImprimanteModel
@ModelMinim NVARCHAR(50),
@ModelMaxim NVARCHAR(50)
AS
BEGIN
-- Corpul procedurii
SELECT *
FROM imprimante
WHERE model >= @ModelMinim AND model <= @ModelMaxim;
END;
2.w.
CREATE PROCEDURE EliminaProdusele
@NumeProducator CHAR(1),
@TipProdus VARCHAR(10)
AS
BEGIN
-- Verificăm dacă există parametrii validați
IF @NumeProducator IS NOT NULL OR @TipProdus IS NOT NULL
BEGIN
-- Eliminăm produsele în funcție de producător și/sau tip
DELETE FROM Stoc.Produse
WHERE (Producator = @NumeProducator OR @NumeProducator IS NULL)
AND (Tip = @TipProdus OR @TipProdus IS NULL);
-- Afisăm un mesaj de confirmare
PRINT 'Produse eliminate cu succes.';
END
ELSE
BEGIN
-- Afisăm un mesaj de eroare pentru parametrii nevalidați
PRINT 'Specificati cel putin un producator sau un tip de produs.';
END
END;
Baza de date noua are o eroere legata de cheia straina si nu executa aceste instructiuni . Am incercat sa
creez o baza de date noua ca sa veific si totul functioneaza
EXEC Elimina @NumeProducator = 'A', @TipProdus = 'PC';
3. Să se creeze o procedură stocată care ar insera în baza de date un model nou de imprimantă. În cazul
când datele inserate sunt incorecte sau incomplete, să se afişeze un mesaj de avertizare. În calitate de
parametri de intrare apar datele pentru modelul respectiv.
SELECT*
FROM imprimante
WHERE Tip='Laser' OR Tip='Jet';
CREATE PROCEDURE InserareImprimanta
@Cod INT,
@Model VARCHAR(4),
@Color CHAR(2),
@Tip VARCHAR(6),
@Pret FLOAT
AS
BEGIN
-- Verificăm dacă datele sunt valide
IF @Cod IS NOT NULL AND @Model IS NOT NULL AND @Color IS NOT NULL AND @Tip IS NOT
NULL AND @Pret IS NOT NULL
BEGIN
-- Verificăm dacă modelul nu există deja
IF NOT EXISTS (SELECT 1 FROM copiatoare.imprimante WHERE Model = @Model)
BEGIN
-- Inserăm noul model
INSERT INTO copiatoare.imprimante(Cod, Model, Color, Tip, Pret)
CORECT
CREATE PROCEDURE prc2
@Producator CHAR(1),
@Model VARCHAR(4),
@Tip VARCHAR(10)
AS
BEGIN
IF @Producator IS NULL OR @Model IS NULL OR @Tip IS NULL
BEGIN
PRINT 'Datele sunt incomplete sau incorecte. Verificați și completați toate
câmpurile.';
END
4.Să se creeze o procedură stocată care, în calitate de parametru de intrare, să aibă numărul de tipuri de
produse fabricate de un producător. În urma executării procedurii, trebuie să se afişeze un mesaj
informativ, care să includă valoarea parametrului inserat şi un tabel cu coloanele Producator, Produs,
Nr_De_Modele pentru fiecare tip de produs.
CREATE PROCEDURE NumarTipuriDeProduse
@Producator CHAR(1)
AS
BEGIN
-- Verificăm dacă producătorul există în tabelul Produse
IF EXISTS (SELECT 1 FROM Produse WHERE Producator = @Producator)
BEGIN
-- Afișăm mesaj informativ
PRINT 'Numărul de tipuri de produse pentru producătorul ' + @Producator + ':';
END
ELSE
BEGIN
-- Afișăm un mesaj de avertizare dacă producătorul nu există
PRINT 'Producătorul ' + @Producator + ' nu există în tabelul Produse.';
END
END;
----------
-- Apelarea procedurii cu un producător existent
EXEC NumarTipuriDeProduse @Producator = 'A';
5.Să se creeze o procedură stocată care ar calcula prețul ce trebuie să-l achite cumpărătorul în timpul
promoțiilor speciale la magazinul de calculatoare. Procedura va trebui să calculeze prețul nou pentru
toate produsele unui producător anumit, în cazul când se anunță promoția. Un cumpărător poate
procura deodată un singur model de produse, dar mai multe unități de acest model. Reducerea poate fi
de câteva tipuri în funcție de tipul produsului, prețul iniţial şi numărul de unități de marfă procurată.
procentul de reducere la preț în funcție de numărul de unități de marfă procurată; procentul de reducere
la preț în dependență de tipul de marfă procurată;
procentul de reducere la preț în dependență de prețul produsului fără reducere. Astfel, trebuie să se
afişeze Modelul, Tipul produsului, Producătorul, Prețul fără reducere, Prețul cu reducere şi Suma totală
spre achitare. Suma totală spre achitare trebuie să tină cont de reducerile calculate. Implicit asupra
produselor procurate nu trebuie sa influenţeze nici o reducere.
-- Afișăm rezultatele
PRINT 'Detalii despre produs:';
PRINT 'Model: ' + @Model;
PRINT 'Tipul: ' + @TipProdus;
PRINT 'Producător: ' + @Producator;
PRINT 'Prețul fără reducere: ' + CAST(@PretFaraReducere AS VARCHAR);
PRINT 'Prețul cu reducere: ' + CAST(@PretCuReducere AS VARCHAR);
PRINT 'Suma totală spre achitare: ' + CAST(@SumaTotala AS VARCHAR);
END
ELSE
BEGIN
-- Afișăm un mesaj de avertizare dacă modelul nu există
PRINT 'Modelul ' + @Model + ' nu există în tabelul Produse.';
END
END;
Varainat functionala
CREATE PROCEDURE CalculeazaPretRedus
@Model varchar(4),
@NumarUnitati int,
@ProcentReducereNumarUnitati float,
@ProcentReducereTip float,
@ProcentReducerePret float
AS
BEGIN
DECLARE @PretFaraReducere float;
DECLARE @PretCuReducere float;
DECLARE @SumaTotala float;
-- Afișează rezultatele
SELECT
Model,
Tip,
Producator,
@PretFaraReducere AS [Pret Fara Reducere],
@PretCuReducere AS [Pret Cu Reducere],
@SumaTotala AS [Suma Totala spre Achitare]
FROM Produse
WHERE Model = @Model;
END
ELSE
BEGIN
-- Afișează mesaj de eroare dacă modelul nu există în nicio categorie
PRINT 'Modelul specificat nu exista in nicio categorie.';
END
END;
Verificare
-- Exemplu de apel al procedurii pentru un model de imprimantă
EXEC CalculeazaPretRedus
@Model = '1276', -- Schimbă modelul în funcție de datele tale
@NumarUnitati = 3, -- Schimbă numărul de unități în funcție de datele tale
@ProcentReducereNumarUnitati = 5, -- Schimbă procentul de reducere în funcție de
datele tale
@ProcentReducereTip = 10, -- Schimbă procentul de reducere în funcție de datele tale
@ProcentReducerePret = 15; -- Schimbă procentul de reducere în funcție de datele tale