Sunday 30 October 2016

Stored procedure என்றால் என்ன?




ஃபங்சன் (function) எதற்காக நிரலாக்க மொழிகளில் உபயொகப் படுதுகின்றோம் எனபதை நாம் அறிவோம்.ஒரே கட்டள்ளை வரிகளின் தொகுப்பை மீண்டும் மீண்டும் உபயொகப்படுத்துவது என்றால் அவற்றை ஃபங்க்சன் என்ற பெயரில் எழுதி வைத்து எப்போதெல்லாம் தேவைப்ப்டுகின்றதோ அந்த பெயரை மற்றும் உபயோகித்து அழைத்தால் அந்த ஃப்ங்சனில் உள்ள வரிகள் execute செய்யப்படும்.அதே தான் sqlserver-ல் T-SQL வரிகளின் தொகுப்பை ஒரு பெயர் கொடுத்து stored procedure ஆக்கி தேவைப் படும் போது அதன் பெயரை மட்டும் கொடுத்து அழைத்தால் அதில் உள்ள T-SQL வரிகள் செயற்படுத்தப்படும்.
அது என்ன T-SQL?
T-SQL என்பது (transaction sql statements என்பதன் சுருக்கமாகும்.இது sql என்பதன் நீட்டுவிக்கப் பட்டதாகும்.
Stored procedure உபயோகத்தின் நண்மைகள்:
1.   சர்வருக்கு நாம் அனுப்பும் டேட்டாவின் அளவு குறைகின்றது.
2.   ஒரு தடவை compile செய்தால் போதுமானது. ஏதாவது மாற்றம் செய்தால் திரும்பவும் recompile செய்து கொள்ளலாம்.
3.   Reusability. ஒரு தடவை எழுதி வைத்துக் கொண்டு எங்கெல்லாம் தேவைப்படுகின்றதோ அங்கெல்லாம் இந்த procedure ஆனதை அழைத்துக் கொள்ளலாம்.
4.   பாதுகாப்பானது. Table ஒன்றிற்கு permission கொடுப்பதற்கு பதில் procedure ஒன்றிற்கு permission கொடுக்கலாம்.
5.   சர்வரில் ஏதாவது file ஒன்றில் business logic எழுதுவதற்கு பதில் அதை stored procedure ஆக எழுதி வைத்துக் கொள்வது நன்று.ஏனென்றால் ஏதாவது மாற்ற்ம் எனில் procedure ஆனதை எளிதாக்க மாற்றிக் கொள்ளலாம்.

Stored procedure உதாரணம்.

Create proc  அல்லது create procedure என்கின்ற வார்த்தைகளுடன் ஆரம்பித்து அடுத்ததாக ஸ்டோர்டு ப்ரசீஜர் பெயர் கொடுக்க வேண்டும்.
அதற்கு முன்னால் டேட்டாபேஸ் மற்றும் டேபிள் உருவாக்கி கொள்ள வேண்டும்.
உதாரணத்திற்கு இங்கு school என்கின்ற டேட்டாபேஸ் உருவாக்கப்பட்டு அதில் smark என்கின்ற டேபிளும் உருவாக்கப்பட்டுள்ளது.
இப்போது SSMS(SQLSERVER MANAGEMENT STUDIO) –ல் school என்கின்ற database செலெக்ட் செய்யப் பட்டு
select * from smark
என்று க்வெரி கொடுத்து output பார்த்தால் பின் வரும் படி வரும்.
பார்க்க படம்-1

படம் 1
create proc spGetMarks

As


Begin

//statements

End
இங்கு spGetmarks என்கின்ற procedure- உருவாக்குவதற்கான முதல் படி.
அடுத்ததாக இந்த procedure-ல் T-SQL STATEMENTS நடுவே எழுதப் படுகின்றது.
உதாரணமாக
create proc spGetMarks
As

Begin

select sno,sname,gender, mark from smark;

End
இந்த procedure முதலில் execute  செய்ய வேண்டும். இப்போது spGetMarks என்கின்ற stored procedure உருவாக்கப்பட்டு விட்டது.இதை இயக்க
வெறும் பெயர் கொடுத்தோ அல்லது அல்லது exec உடனோ அல்லது
Execute கொடுத்தோ இதை இயக்க்வேண்டும்.
உதாரணம்:
spGetmarks
அல்லது
exec spGetmarks
அல்லது
execute spGetMarks

output:பார்க்க படம்-2




.
படம் 2

பரா மீட்டர்களுடன் stored procedure உருவாக்குவது எப்படி?

ஃப்ங்சனுக்கு எப்படி பராமீட்டர் எழுதுகின்றோமோ அதே போல் stored procedure ஆனதற்கும் பராமீட்டர் அனுப்பலாம்
இப்போது அதே procedure ஆனதை எவ்வாறு மாறுதல் செய்யலாம் என்பதை
மாற்றம் செய்து பராமீட்டர் அனுப்பலாம் எனக் காணலாம்.

Stored procedure எவ்வாறு alter செய்யப்படுகின்றது?

Alter procedure என்கின்ற கீவேர்டு மூலம் கோடிங்கை மாற்றலாம்.அத்துடன் பராமீட்டரும் எவ்வாறு pass செய்வது என்று பார்ப்போம்.
Alter  procedure spGetMarks
@gender nvarchar(50)
As
Begin
select sno,sname,gender, mark from smark where  gender=@gender
End


இப்போது இந்த வரிகளை execute செய்ய வேண்டும்.
இப்போது
Execute spGetMark
பராமீட்டர் செலுத்தப்படவில்லை என்ற பிழை சுட்டப்படும்.
exec spGetmarksfemale’

என்றால் பின்வருமாறு வெளியீடு கிடைக்கும்.
பார்க்க படம்-3

 
படம் 3

exec spGetmarksmale’

என்றால் பின்வருமாறு வெளியீடு கிடைக்கும்.
பார்க்க படம்-4


படம் 4

stored procedure வரிகளை எவ்வாறு காண்பது?

ஒரு procedure பெயர் கொடுத்து அதன் நிரல் வரிகளை அறிவிதற்கு sp_helptext என்கின்ற library stored procedure உப்யோகப்படுத்தப் படுகின்றது.
sp_helptext spGetMarks
வெளியீடு:பார்க்க படம்-5





படம் 5




இதையே visual ஆக எப்படி பண்ணலாம்.?


Stored procedure பெயரை வலது க்ளிக் செய்து script Stored procedure as என்பதை க்ளிக் செய்து பிறகு create to என்பதை க்ளிக் செய்து அதன் பின் New Query Editor Window என்பதை சொடுக்கிடவும்.
பார்க்க படம்-6


படம் 6
பின் வரும் வரிகள் கொண்ட புதிய விண்டோ open ஆகும். அதில் பின் வரும்
வரிகள் இருக்கும்.
USE [school]
GO

/****** Object:  StoredProcedure [dbo].[spGetMarks]    Script Date: 10/29/2016 20:54:34 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE  procedure [dbo].[spGetMarks]
@gender nvarchar(50)
As
Begin
select sno,sname,gender, mark from smark where  gender=@gender
End
GO
குறிப்பு:
sp_ என்கின்ற prefix உடன் வரும் stored procedure எல்லாமே library procedures ஆகும். எனவே sp_ என்கின்ற பெயரை user defined procedure –க்கு prefix ஆக வைக்க வேண்டாம். இது name conflict என்பதை  தவிர்க்கவே.
 

Stored procedure ஆனதை எவ்வாறு drop செய்வது?

பொதுவாக டேபிளை delete செய்வதற்கு procedure பெயரை வலது க்ளிக் செய்து delete க்ளிக் செய்யப்படும்.பின் வரும் விண்டோவில் o.k செய்யவும்.

அல்லது
Drop procedure கொடுத்து stored procedure –ன் பெயர் கொடுக்கவும்.
உதாரணம்:
Drop procedure spGetMarks.
Output பராமீட்டர் உபயோகிப்பது எப்படி?
பொதுவாக ஃபங்சனுக்கு பராமீட்டர் அனுப்புவது போல் அதிலிருந்து return –ம் செய்வோம்.அதே போல் stored procedure-ல் இருந்தும் மதிப்புகளை வெளியீட்டாகவும் பெறலாம். அதற்கு பராமீட்டரை out அல்லது output பராமீட்டர் என்கின்ற கீவேர்டு கொண்டு அறிவிக்க வேண்டும்.
Alter procedure spGetMarks
@gender nvarchar(50),
@nocolumns int output
as
Begin
select @nocolumns=count(sno) from smark where gender=@gender
end

மேலே உள்ள procedure-ல் @gender என்பது input பராமீட்டர் ஆகவும் @nocolumn ஆனது output பராமீட்டர் ஆகவும் அறிவிக்கப்பட்ட்டுள்ளது.
குவரியில் @nocolumns என்பதற்கு count(sno) மதிப்பிருத்தல் செய்யப் பட்டுள்ளது
கவனிக்கவும் குறிப்பிட்ட gender மட்டும் count செய்கின்றது.
கவனிக்கவும்.
 where gender=@gender

இப்போது இந்த procedure ஆனதை இயக்க கீழ் வருமாரு கோடிங் செய்யப்பட்டுள்ளது.
declare @scount int
Exec spGetMarks 'female' ,@scount out
print @scount
நோக்கவும் :
@scount என்பது out என்கின்ற கீவேர்டுடன் குறிப்பிடப் பட்டுள்ளது
வெளியீடு:
1
ASP.NET –ல் Stored procedure எவ்வாறு உபயோகிப்பது?
Front end-ல் இருந்த படியே back end ஆனதை எவ்வாறு தொடர்வு கொள்வது எப்படி என்று பார்ப்போம்.
புதியவர்களுக்கு :
Back end என்றால் பொதுவாக டேட்டா பேஸை குறிக்கும்.அதில் தான் நமக்கு தேவையான தகவல்கள் (datas) எல்லாம் இருக்கும்.உதாரணம்:MS-ACCESS,MS-SQLSERVER,MY SQL,ORACLE).front end என்பது நமக்கும் பேக் எண்டிற்கும் இடை முகப்பாக உள்ளது.அதாவது டிசைனிங்கும் செய்து back end ஆன டேட்டாபேஸை கனெக்ட் செய்து டேட்டாவை பெற்று display செய்கின்றது.
உதாரணம்:c#,vb.net,java,asp.net
முதலில் நாம் smark என்கின்ற டேபிளுக்கு spMark என்கின்ற stored procedure
உருவாக்கிக் கொள்ள வேண்டும்.
create proc spMark
As
Begin
select * from smark;
End

Asp.net –ல் முதலில் web.config சென்று connection string ஒன்று உருவாக்கி கொள்ள வேண்டும்.
<?xml version="1.0"?>

<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->

<configuration>

  <connectionStrings>
    <add name="cs"
         connectionString="Data Source=MUTHU-PC\SQLEXPRESS;Initial Catalog=school;Integrated Security=SSPI"/>
  </connectionStrings>

  
 <system.web>
        <compilation debug="true" targetFramework="4.0" />
    </system.web>                                                             

</configuration>

 இங்கு data source-ல் ssms-ல் connection உருவாக்கும் போது அதன் டயலாக் பாக்ஸில் உள்ள சர்வர் பெயரை குறிப்பிடவும்.Initial Catalog என்பது டேட்டாபேஸின்  பெயர் குறிப்பிடவும். Integrated Security=SSPI என்பது windows authentication என்பதைக் குறிக்கும்.
இப்போது gridview ஒன்றை ஃபார்மில் ட்ராக் செய்து கொள்ளவும்.
பின்பு page_Load ஈவண்டில் பின் வரும் நிரல் வரிகளை சேர்த்துக் கொள்ளவும்.
அதற்கு முன் பின் வரும் நேம் பேசஸ்களை இம்போர்ட் செய்து கொள்ளவும்.
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

இப்போது page_Load ஈவண்டில் பின் வரும் நிரல் வரிகளை சேர்த்துக் கொள்ளவும்.
protected void Page_Load(object sender, EventArgs e)
        {
            string cs = ConfigurationManager.ConnectionStrings["cs"].ConnectionString;
            SqlConnection con = new SqlConnection(cs);
            SqlDataAdapter da=new SqlDataAdapter("spMark",con);
            da.SelectCommand.CommandType = CommandType.StoredProcedure;
            DataSet ds=new DataSet ();
            da.Fill(ds);
            GridView1.DataSource = ds;
            GridView1.DataBind();

        }
SqldataAdapter ஆப்ஜெக்டிற்கு குவரி அனுப்புவதற்கு பதில் spMark என்கின்ற stored procedure-ன் பெயரை குறிப்பிட வேண்டும்.அதற்கடுத்த வரியில் command type ஆக storedprocedure பெயர் குறிப்பிடப்பட்டுள்ளதை கவனிக்கவும்.
வெளியீடு:பார்க்க் படம்-7

படம் 7

இவ்வாறாக stored procedure உபயோகப் படுத்தப் படுகின்றது.
 










No comments:

Post a Comment