Quantcast
Channel: கணியம்
Viewing all articles
Browse latest Browse all 1914

Advanced MySQL – Stored Procedures

$
0
0

Stored Procedures

Stored Procedures என்பது ஒன்று அல்லது அதற்கு மேற்பட்ட query-களை உள்ளடக்கிய ஒரு தொகுப்பு ஆகும். இவற்றைத் தனித்தனி query-களாக execute செய்வதைக் காட்டிலும், இதுபோன்று ஒன்றாகத் தொகுத்து execute செய்வதன் மூலம் database-ன் செயல்திறன் அதிகரிக்கிறது. இதுபோன்ற தொகுப்புகள்(Procedures) database-ன் server-ல் சேமிக்கப்படுவதால் இவை சேமிக்கப்பட்ட தொகுப்புகள்(Stored Procedures) என்று அழைக்கப்படுகின்றன.

Query1

முதலில் எளிமையான query-யை உள்ளடக்கிய stored procedure-ஐ எவ்வாறு உருவாக்குவது என்று பார்ப்போம்.

create procedure abc()

select * from payroll;

call abc();

இங்கு abc எனும் procedure உருவாக்கப்பட்டுவிட்டது. இதன் பின்னர் abc-ஐ அழைக்கும்போதெல்லாம் அதற்குள் உள்ள query, execute-செய்யப்பட்டு அதன் output மட்டுமே வெளிவரும்.

Query2:

ஒன்றுக்கும் மேற்பட்ட வரிகளை procedure-ல் எழுதும்போது அவற்றை begin, end எனும் keyword-க்குள் எழுத வேண்டும். மேலும் ; க்கு பதிலாக // ஐ delimiter-ஆகப் பயன்படுத்த வேண்டும். அப்போதுதான் நாம் உருவாக்கும் stored procedure, server-க்குள் சென்று சேமிக்கப்படும்.

எனவே DELIMITER // என்பது default ஆன ; க்கு பதிலாக // ஐ delimiter-ஆக மாற்றி அமைக்கும்.

delimiter //

create procedure xyz()

BEGIN

select * from employees limit 2;

select * from organisation limit 2;

END//

delimiter ;

call xyz();

ஒரு stored procedure உருவாக்கப்பட்ட பின்னர் மீண்டும் delimiter-ஐ ; க்கு மாற்றி அமைக்க DELIMITER ; என்று கொடுக்க வேண்டும். இது பின்வருமாறு.

delimiter ;

call xyz();

Passing Parameters

Query3:

ஏதேனும் ஒரு மதிப்பினை variable மூலமாக procedure-க்குள் செலுத்த IN keyword பயன்படுகிறது. இங்கு x என்பது variable ஆகும்.

delimiter //

create procedure m(IN x int(10))

BEGIN

select * from employees where salary<x;

END

//

delimiter ;

call m(10000);

Query4:

ஏதேனும் ஒரு மதிப்பினை procedure நமக்கு வெளிப்படுத்துமாறு செய்ய OUT keyword பயன்படுகிறது.

delimiter //

create procedure count_low_paid_people(IN salary_amount int(10), OUT total int)

BEGIN

select count(*) into total from employees where salary<salary_amount;

END

//

delimiter ;

call count_low_paid_people(10000,@total);

select @total;

select * from employees where salary<10000;

Query5:

ஏதேனும் ஒரு மதிப்பினை procedure-க்குள் செலுத்தி, அதன்மீது சில கணக்கீடுகள் செய்து மீண்டும் அந்த மதிப்பினை procedure வெளிப்படுத்துமாறு செய்ய INOUT keyword பயன்படுகிறது.

DELIMITER //

CREATE PROCEDURE set_counter(INOUT count INT(4),IN inc INT(4))

BEGIN

SET count = count + inc;

END

//

DELIMITER ;

SET @counter = 1;

CALL set_counter(@counter,1); — 2

CALL set_counter(@counter,1); — 3

CALL set_counter(@counter,5); — 8

SELECT @counter; — 8

Query6:

Case statement-ஐ query-ல் எவ்வாறு பயன்படுத்துவது என்று query 47-ல் பார்த்தோம். இப்போது அதனையே எவ்வாறு stored procedure-ல் அமைப்பது என்று பின்வருமாறு பார்க்கலாம்.

DELIMITER //
CREATE PROCEDURE GetCustomerLevel(

in p_customerNumber int(11),

out p_customerLevel varchar(10))

BEGIN

DECLARE creditlim double;

SELECT creditlimit INTO creditlim

FROM customers

WHERE customerNumber = p_customerNumber;

CASE

WHEN creditlim > 50000 THEN

SET p_customerLevel = ‘PLATINUM';

WHEN (creditlim <= 50000 AND creditlim >= 10000) THEN

SET p_customerLevel = ‘GOLD';

WHEN creditlim < 10000 THEN

SET p_customerLevel = ‘SILVER';

END CASE;

END

//

இங்கு

Credit limit:

> 50 K = Platinum

<50K & > 10 K = Gold

<10K = Silver

 

 

CALL GetCustomerLevel(112,@level);

SELECT @level AS ‘Customer Level';

Result:

PLATINUM


Viewing all articles
Browse latest Browse all 1914

Trending Articles


‘ஹன்சிகா நிர்வாண குளியல் வீடியோ': பதறிப்போன கோடம்பாக்கம்


மாமனார், மாமியாரை மருமக்களும் பராமரிப்பது கட்டாயம்: சட்ட திருத்தம் செய்ய...


கலப்படம் கலப்படம்


குழந்தை பிறந்த நேரம் எப்படி..? கண்டாந்தர நட்சத்திர தோசம்


ஆசீர்வாத மந்திரங்கள்


மாணிக்கவாசகர் பிறந்த ஊர்


மது போதையில் ஆட்டம், வீடியோவால் வந்த வினை... மாணவிகளுக்கு செக் வைத்த கல்லூரி.!


சகல தோஷமும் நிவர்த்தியாகும் ஸ்லோகம்


ஒன்பது கோடி முனிவர்கள் மற்றும் தேவர்களின் அருளை பெற்றுத்தரும் பதஞ்சலி காயத்ரி...


“உலகையே மிரள வைக்கும் “ திருநள்ளாறு சனீஸ்வரர் பகவான் !!