استفاده از قطعه کدها در SQL Server

یک ویژگی جدید در SQL Server 2012 وجود دارد که code snippets (قطعه کدها) نامیده میشود. ما با هر زبان برنامه نویسی کار کرده ایم و شانس این را داشته ایم که بطور مداوم از کد مشابه ای را تکرار میکنیم. تکرار کد مشابه نیازمند تلاش بیشتر است و همچنین در بعضی از مواقع ناخوشایند خواهد بود.این مشکل با معرفی قابلیت code snippet درSQL Server 2012 ، توسط برنامه نویسان SQL Server رفع شده است. در این مقاله تلاش داریم نحوه ی استفاده از قطعه کدهای پیش فرض و تغییر آنها را به شما آموزش دهیم.

استفاده از قطعه کدها در SQL Server

 یک ویژگی جدید در SQL Server 2012 وجود دارد که code snippets (قطعه کدها) نامیده میشود. ما با هر زبان برنامه نویسی کار کرده ایم و شانس این را داشته ایم که بطور مداوم از کد مشابه ای را تکرار میکنیم. تکرار کد مشابه نیازمند تلاش بیشتر است و همچنین در بعضی از مواقع ناخوشایند خواهد بود.

این مشکل با معرفی  قابلیت  code snippet درSQL Server 2012 ،  توسط برنامه نویسان SQL Server رفع شده است. در این مقاله تلاش داریم نحوه ی استفاده از قطعه کدهای پیش فرض و تغییر آنها را به شما آموزش دهیم.

نحوه ی استفاده از Code Snippets:

برای وارد کردن یک Code Snippet (قطعه کد) در پنجره Query به منو Edit ، intellisence بروید و گزینه ی Insert Snippet را مانند تصویر زیر انتخاب کنید.

 

روش دیگر برای این کار، راست کلیک کردن بر روی پنجره Query و انتخاب گزینه snippets option می باشد.

SQL Server شامل دو نوع snippet (قطعه) است.

_Expansion snippetها به راحتی در مکانی که cursor به ان اشاره میکند متن و کدی را وارد میکند یا جایگزین متنی که انتخاب شده ، میکند.

_Surround With snippetها، متن یا کدی را قبل یا بعد از cursor یا متن انتخاب شده، وارد میکند.

این کاملا به شما بستگی دارد که کدام گزینه را انتخاب میکنید. اگر شما گزینه “Insert Snippets” را انتخاب کنید، لیستی مانند زیر برای شما باز خواهد شد.

در لیست بالا، شما میتوانید هر نوع snippet که به آن نیاز دارید را انتخاب کنید. چندین نوع code snippet برای هر شی وجود دارد، بنابراین شما نیاز دارید که فولدر مورد نظر خود را آدرس دهی کنید و قطعه کد موردنیاز را انتخاب کنید.

بعد از انتخاب کد دلخواه، میتوانید قطعه کد موردنظر خود را در پنجره SQL مشاهده کنید.

این قطعه کد، چندین فیلد می باشد و به شما این امکان داده شده است که هر فیلدی را موردنیاز می باشد را ویرایش کنید.

برای خط مجاور، گزینه “Surround With” را انتخاب کنید و قالب دلخواه قطعه کد خود را انتخاب کنید.

شخصی سازی Code Snippetها:

ممکن است که قطعه کدهای پیش فرض، دقیقا آن چیزی نباشند که ما میخواستیم ایجاد شود. ما میتوانیم تمامی  code snippetها را با استفاده از Code Snippets Manager  مدیریت کنیم. برای دسترسی به Code Snippets Manager به قسمت Tools بروید و روی گزینه “Code Snippets Manager..”  انتخاب کنید.

 

در Code Snippets Manager، میتوانیم تمام templateهای(code snippet) قابل دسترس را مشاهده کنیم، ما همچنین میتوانیم code snippetها را  اضافه، کم کنیم و یا آنها را از خارج، برنامه وارد کنیم.  Snippetها فایلهای xml میباشد که پسوند مخصوصی دارد. برای تشخیص ساختار snippets template، مسیر snippet را جستجو کنید.

Template (فایل XML) برای جدول قطعه کدها در آدرس

:\C:\Program Files (x86)\Microsoft SQL Server\120\Tools\Binn\ManagementStudio\SQL\Snippets\1033\Table\Create Table.snippet

 ذخیره شده است.

اکنون، می خواهیم یک ساختار پایه برای code snippetها بررسی کنیم. ما code snippets را برای “Create Table” استفاده میکنیم.

1.	<?xml version="1.0" encoding="utf-8" ?>  
2.	    <CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">  
3.	        <_locDefinition xmlns="urn:locstudio">  
4.	            <_locDefault _loc="locNone" />  
5.	            <_locTag _loc="locData">Title</_locTag>  
6.	            <_locTag _loc="locData">Description</_locTag>  
7.	            <_locTag _loc="locData">Author</_locTag>  
8.	            <_locTag _loc="locData">ToolTip</_locTag>  
9.	        </_locDefinition>  
10.	        <CodeSnippet Format="1.0.0">  
11.	            <Header>  
12.	                <Title>CreateTable</Title>  
13.	                <Shortcut></Shortcut>  
14.	                <Description>Creates a table.</Description>  
15.	                <Author>Microsoft Corporation</Author>  
16.	                <SnippetTypes>  
17.	                    <SnippetType>Expansion</SnippetType>  
18.	                </SnippetTypes>  
19.	            </Header>  
20.	            <Snippet>  
21.	                <Declarations>  
22.	                    <Literal>  
23.	                        <ID>SchemaName</ID>  
24.	                        <ToolTip>Name of the schema</ToolTip>  
25.	                        <Default>dbo</Default>  
26.	                    </Literal>  
27.	                    <Literal>  
28.	                        <ID>Tablename</ID>  
29.	                        <ToolTip>Name of the table</ToolTip>  
30.	                        <Default>Sample_Table</Default>  
31.	                    </Literal>  
32.	                    <Literal>  
33.	                        <ID>column1</ID>  
34.	                        <ToolTip>Name of the column</ToolTip>  
35.	                        <Default>column_1</Default>  
36.	                    </Literal>  
37.	                    <Literal>  
38.	                        <ID>datatype1</ID>  
39.	                        <ToolTip>Data typeof the column</ToolTip>  
40.	                        <Default>intNOTNULL</Default>  
41.	                    </Literal>  
42.	                    <Literal>  
43.	                        <ID>column2</ID>  
44.	                        <ToolTip>Name of the column</ToolTip>  
45.	                        <Default>column_2</Default>  
46.	                    </Literal>  
47.	                    <Literal>  
48.	                        <ID>datatype2</ID>  
49.	                        <ToolTip>Data typeof the column</ToolTip>  
50.	                        <Default>intNULL</Default>  
51.	                    </Literal>  
52.	                </Declarations>  
53.	                <Code Language="SQL">  
54.	<![CDATA[CREATE TABLE $SchemaName$.$Tablename$  
55.	(  
56.	$column1$ $datatype1$,  
57.	$column2$ $datatype2$  
58.	);$end$]]>  
59.	</Code> </Snippet>  
60.	        </CodeSnippet>  
61.	    </CodeSnippets>  

 

در ابتدا، تگی  که فایل xml در آن تعریف شده است و version و encoding مشخص شده است را پیدا میکنیم. انجام این عمل را برای همه ی فایل های XML پیشنهاد میکنیم. سپس قطعه کدهایی شامل تمامی تعاریف snippet و namespaceهای مربوط به snippet می باشد. یک فایل مربوط به  قطعه کد (code snippet) میتواند شامل تنها یک تگ “Code Snippets” باشد. تگ Code Snippetها، اساسا خود شامل دو تگ اصلی هستند. که اولین تگ، تگ Header می باشد که عنوان، shortcut، توضیحات، نویسنده کد و نوع snippetها در آن مشخص میشود. شما میتوانید این کدها را نیز تغییر دهید و ویرایش کنید.

تگ دوم، تگ “Snippets” نامیده میشود، این تگ مهمترین تگ برای code snippet می باشد و کدهای اصلی در آن نوشته میشود. این تگ، خود شامل دو بخش با نام Declaration (تعریف)و Code(کد) می باشد. در قسمت Declaration به ما اجازه داده شده است که متغیرهایی که در قسمت کد مورد استفاده قرار میگیرد را تعریف کنیم. تعاریف متغیرها، لیترال نامیده میشود. تگ لیترال شامل سه property (ویژگی) می باشد.

ID: یکid منحصربفرد برای لیترال که نباید تکراری باشد

Tooltip: توضیح مختصر درمورد لیترال که مشخص میکند زمانی که لیترال انتخاب شد از چه نوعی باشد.

Default : متنی که هنگام اضافه کردن snippet نمایش داده میشود را تعریف میکند.

قسمت کد شامل تعریف code snippetها و استفاده از لیترال هایی است که در قسمت declaration تعریف شده است. در قسمت Code ، زبان (SQL یا XML ) مشخص میشود کدها در این قسمت بین “<![CDATA[“ and “]]>” نوشته می شود. در قسمت کد $end$ و $select$ کلمات را ذخیره میکنند. کلمه ی $end$ مکان cursor را بعد از اینکه code snippetوارد شد، مشخص میکند و کلمه $selected$ متن انتخاب شده در document را نمایش میدهد که هنگام فراخوانی snippet در داخل آن افزوده میشود.

شخصی سازی Code Snippetها:

در این قسمت میخواهیم که در code snippet تغییر ایجاد کنیم. برای این کار ما code snippets مربوط به “Create Table” template را تغییر میدهیم. بطور پیش فرض زمانیکه “Create Table” template اضافه میشود کد زیر بازیابی میشود.

حال میخواهیم که این code snippetها شامل بیش از سه ستون همراه با data type از نوع int، varchar  و  date (تاریخ) باشد. به قسمتی که این code snippet قرار دارند بروید و آن با هر IDE که در دسترس دارید باز کنید. سه لیترال برای نام ستون ها و سه لیترال دیگر برای نوع داده (data type) مانند زیر اضافه کنید.

حال نیاز داریم که تغییرات لازم را در code snippet ایجاد کنیم و از لیترال هایی که در قسمت declaration ایجاد کردیم استفاده کنیم.

کد کامل مربوط به code snippets:

1.	<?xmlversion="1.0"encoding="utf-8" ?>  
2.	    <CodeSnippetsxmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">  
3.	        <_locDefinitionxmlns="urn:locstudio">  
4.	            <_locDefault_loc="locNone" />  
5.	            <_locTag_loc="locData">Title</_locTag>  
6.	                <_locTag_loc="locData">Description</_locTag>  
7.	                    <_locTag_loc="locData">Author</_locTag>  
8.	                        <_locTag_loc="locData">ToolTip</_locTag>  
9.	                            </_locDefinition>  
10.	                            <CodeSnippetFormat="1.0.0">  
11.	                                <Header>  
12.	                                    <Title>Create Table</Title>  
13.	                                    <Shortcut></Shortcut>  
14.	                                    <Description>Creates a table. Contains 5 columns. </Description>  
15.	                                    <Author>Pankaj Choudhary</Author>  
16.	                                    <SnippetTypes>  
17.	                                        <SnippetType>Expansion</SnippetType>  
18.	                                    </SnippetTypes>  
19.	                                </Header>  
20.	                                <Snippet>  
21.	                                    <Declarations>  
22.	                                        <Literal>  
23.	                                            <ID>SchemaName</ID>  
24.	                                            <ToolTip>Name of the schema</ToolTip>  
25.	                                            <Default>dbo</Default>  
26.	                                        </Literal>  
27.	                                        <Literal>  
28.	                                            <ID>Tablename</ID>  
29.	                                            <ToolTip>Name of the table</ToolTip>  
30.	                                            <Default>Sample_Table</Default>  
31.	                                        </Literal>  
32.	                                        <Literal>  
33.	                                            <ID>column1</ID>  
34.	                                            <ToolTip>Name of the column</ToolTip>  
35.	                                            <Default>column_1</Default>  
36.	                                        </Literal>  
37.	                                        <Literal>  
38.	                                            <ID>datatype1</ID>  
39.	                                            <ToolTip>Data type of the column</ToolTip>  
40.	                                            <Default>int NOT NULL</Default>  
41.	                                        </Literal>  
42.	                                        <Literal>  
43.	                                            <ID>column2</ID>  
44.	                                            <ToolTip>Name of the column</ToolTip>  
45.	                                            <Default>column_2</Default>  
46.	                                        </Literal>  
47.	                                        <Literal>  
48.	                                            <ID>datatype2</ID>  
49.	                                            <ToolTip>Data type of the column</ToolTip>  
50.	                                            <Default>int NULL</Default>  
51.	                                        </Literal>  
52.	                                        <Literal>  
53.	                                            <ID>column3</ID>  
54.	                                            <ToolTip>Name of the column</ToolTip>  
55.	                                            <Default>column_3</Default>  
56.	                                        </Literal>  
57.	                                        <Literal>  
58.	                                            <ID>column4</ID>  
59.	                                            <ToolTip>Name of the column</ToolTip>  
60.	                                            <Default>column_4</Default>  
61.	                                        </Literal>  
62.	                                        <Literal>  
63.	                                            <ID>column5</ID>  
64.	                                            <ToolTip>Name of the column</ToolTip>  
65.	                                            <Default>column_5</Default>  
66.	                                        </Literal>  
67.	                                        <Literal>  
68.	                                            <ID>datatype3</ID>  
69.	                                            <ToolTip>Data type of the column</ToolTip>  
70.	                                            <Default>int NULL</Default>  
71.	                                        </Literal>  
72.	                                        <Literal>  
73.	                                            <ID>datatype4</ID>  
74.	                                            <ToolTip>Data type of the column</ToolTip>  
75.	                                            <Default>varchar(max) NULL</Default>  
76.	                                        </Literal>  
77.	                                        <Literal>  
78.	                                            <ID>datatype5</ID>  
79.	                                            <ToolTip>Data type of the column</ToolTip>  
80.	                                            <Default>[date] NULL</Default>  
81.	                                        </Literal>  
82.	                                    </Declarations>  
83.	                                    <CodeLanguage="SQL">  
84.	                                        <![CDATA[CREATE TABLE $SchemaName$.$Tablename$  
85.	(  
86.	$column1$ $datatype1$,  
87.	$column2$ $datatype2$,  
88.	$column3$ $datatype3$,  
89.	$column4$ $datatype4$,  
90.	$column5$ $datatype5$  
91.	);$end$]]>  
92.	                                        </Code>  
93.	                                </Snippet>  
94.	                                </CodeSnippet>  
95.	                                </CodeSnippets>  

هنگامیکه تمامی تغییرات انجام شد، نیاز خواهد بود تا تمامی این تغییرات ذخیره شوند و وارد code snippets در پنجره query کنید.

هنگامیکه “Create Table” Template انتخاب کنید، توجه کنید که سه ستون جدید در “Create Table” snippets. اضافه شده است.

دانلود نسخه ی PDF این مطلب