fbpx

 

---------------------------
-- WHILE LOOP
---------------------------

-- Ex1
DECLARE
		@v_var int
BEGIN
		SET @v_var = 0
		WHILE @v_var < 10
		BEGIN
			PRINT @v_var
			SET @v_var = @v_var + 1
		END
END 

-- Ex2 

SELECT * FROM employees 

DECLARE
	@v_employees_counter int ,
	@v_lastname varchar(25)
BEGIN
	SET @v_employees_counter = 1 

	WHILE @v_employees_counter <= 9
	BEGIN
		SELECT @v_lastname = lastName FROM employees WHERE employeeID = @v_employees_counter
		PRINT ' ----------------------'
		PRINT @v_lastname
		IF LEN(@v_lastname) > 6
		PRINT 'Your name is toooooo long !'
		ELSE
		PRINT 'Your name is tooo short !'
		PRINT ' ----------------------'
		SET @v_employees_counter = @v_employees_counter + 1
	END
END 

-- P2

DECLARE
	@v_productID int ,
	@v_productName varchar(25) ,
	@v_unitPrice int
BEGIN
	SET @v_productID = 1
	WHILE @v_productID < 10
	BEGIN
		SELECT @v_productName = productName , @v_unitPrice = unitPrice
		FROM products WHERE productID = @v_productID
		PRINT @v_productName
		PRINT @v_unitPrice
		IF @v_unitPrice < 50  PRINT ' < 50' ELSE PRINT ' > 50'
		PRINT '-----------------'
		SET @v_productID = @v_productID + 1
	END
END 

SELECT * FROM suppliers 

-- P3 

DECLARE
		@v_supplierID int ,
		@v_companyName varchar(25) ,
		@v_city varchar(25)
BEGIN
		SET @v_supplierID = 1 

		WHILE @v_supplierID <= 10
		BEGIN
			SELECT @v_companyName = companyName ,@v_city = city
			FROM suppliers
			WHERE supplierID =  @v_supplierID
			IF @v_city = 'London' PRINT @v_companyName + ' - ' + @v_city
			--IF @v_city = 'London' PRINT 'yes !' ELSE PRINT 'no !'
			SET @v_supplierID = @v_supplierID + 1
		END
END 

-----------------------------
-- CURSORS
----------------------------
GO

DECLARE
	@v_productName varchar(25)
	DECLARE myCursor CURSOR FOR
	SELECT productName
	FROM products
	WHERE categoryID = 5
BEGIN
	OPEN myCursor
	FETCH NEXT FROM myCursor INTO @v_productName
	WHILE @@FETCH_STATUS = 0
	BEGIN
			PRINT @v_productName
			FETCH NEXT FROM myCursor INTO @v_productName
	END
	CLOSE myCursor
	DEALLOCATE myCursor
END 

-- P4
SELECT * FROM employees 

GO 

DECLARE
	@v_firstName  varchar(25) ,
	@v_lastName varchar(25)
	DECLARE myCursor CURSOR FOR
	SELECT firstName , lastName
	FROM employees
	WHERE city = 'London'
	ORDER BY firstName
BEGIN
	OPEN myCursor
	FETCH NEXT FROM myCursor INTO @v_firstName , @v_lastName
	WHILE @@FETCH_STATUS = 0
	BEGIN
			PRINT @v_firstName + ' ' + @v_lastName
			FETCH NEXT FROM myCursor INTO @v_firstName , @v_lastName
	END
	CLOSE myCursor
	DEALLOCATE myCursor
END 

-- P3

DECLARE
	@v_productName varchar(25),
	@v_unitPrice int ,
	@v_productID int ,
	@v_avg int
	DECLARE myCursor CURSOR FOR
	SELECT productName , unitPrice , productID
	FROM products
	WHERE categoryID = 5
BEGIN

	SELECT @v_avg = AVG(unitPrice) FROM products WHERE categoryID = 5 

	OPEN myCursor
	FETCH NEXT FROM myCursor INTO @v_productName  , @v_unitPrice , @v_productID
	WHILE @@FETCH_STATUS = 0
	BEGIN
			PRINT @v_productName + ' ' + CAST(@v_unitPrice AS VARCHAR)
			IF @v_unitPrice > @v_avg
			BEGIN
				PRINT '@v_unitPrice > @v_avg'
				UPDATE products SET unitPrice = unitPrice * 1.1 WHERE productID = @v_productID
			END
			ELSE IF  @v_unitPrice < @v_avg
			BEGIN
				PRINT '@v_unitPrice < @v_avg'
				UPDATE products SET unitPrice = unitPrice * 0.9 WHERE productID = @v_productID
			END

			FETCH NEXT FROM myCursor INTO @v_productName  , @v_unitPrice  , @v_productID
	END
	CLOSE myCursor
	DEALLOCATE myCursor
END