fbpx

 

-------------------------------------------
-- Functions
-------------------------------------------

-- Create / Alter function
ALTER FUNCTION dbo.tax_fun
(@num_to_tax MONEY)
RETURNS MONEY
AS
	BEGIN
		RETURN @num_to_tax*1.155
	END

-- Calling it from SELECT statement
SELECT dbo.tax_fun(10) 

-- Calling it from DECLARE block 

DECLARE
	@v_catch_me MONEY
	@v_catch_me_again VARCHAR(25)
BEGIN
	SET @v_catch_me = dbo.tax_fun(10)
	SET @v_catch_me_again = UPPER('hello')
END 

-- Ex2 

CREATE FUNCTION dbo.two_letter_fun
(@word varchar(25))
RETURNS VARCHAR(2)
AS
BEGIN
	RETURN SUBSTRING(@word , 1 ,2)
END 

SELECT dbo.two_letter_fun('HELLO') 

SELECT dbo.two_letter_fun(lastName)
FROM employees 

DECLARE
	@v_catch_me varchar(25)
BEGIN
	SET @v_catch_me = dbo.two_letter_fun('HELLO')
	PRINT @v_catch_me
END 

-- P1 

ALTER FUNCTION dbo.email_fun
(@p_firstname varchar(25) ,
 @p_lastname varchar(25) )
 RETURNS varchar(25)
 AS
 BEGIN
	RETURN SUBSTRING( @p_firstname , 1 ,1) + substring(@p_lastName , 1 ,4) + '@someemail.com'
 END

 SELECT  dbo.email_fun ('moshe' , 'levi') 

 SELECT dbo.email_fun (lastName , firstName) AS 'MAIL'
 FROM employees 

 -- Ex3 

 CREATE FUNCTION dbo.prod_name_by_id_fun
 (@p_productid int)
 RETURNS VARCHAR(25)
 AS
 BEGIN
 DECLARE
	@v_productName varchar(25)
 SELECT @v_productName = productName FROM products WHERE productID = @p_productid
 RETURN @v_productName
 END 

 SELECT dbo.prod_name_by_id_fun(5) 

 SELECT dbo.prod_name_by_id_fun(productID)
 FROM products