CodehighlightingproducedbyActiproCodeHighlighter(freeware)
h" />

欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

賞心悅目!SQL Server漂亮腳本書寫格式

系統 1923 0

【IT168技術文檔】 本篇來聊聊如何書寫漂亮、整潔、優雅的SQL腳本,下面這些是我個人總結、整理出來的。姑且做個拋磚引玉吧,呵呵,歡迎大家一起來討論。

  我們首先來看看一段創建數據表的腳本(如下所示),你是否覺得有什么不妥或是不足呢?如果是你,你怎樣書寫呢?

#div_code img{border:0px;}
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> CREATE TABLE [dbo].[TableDataDictionary](
[TableID] [
int ] IDENTITY( 1 , 1 ) NOT NULL
,
[IpAddress] [nvarchar](
15 ) NOT NULL
,
[DataBaseName] [nvarchar](
35 ) NOT NULL
,
[TableName] [nvarchar](
35 ) NOT NULL
,
[Description] [nvarchar](
150 ) NULL
,
CONSTRAINT [PK_TableDataDictionary] PRIMARY KEY([Tableid])
)

  可能你也沒有覺得它有什么不妥,因為你一直都是這樣書寫哦。而且更混亂、更雜的的腳本你也見過,也可能習慣了;那么來看看下面的腳本,

#div_code img{border:0px;}
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> USE [Test];
GO

IF OBJECT_ID(N ' TableDataDictionary') IS NULL

CREATE TABLE [dbo].[TableDataDictionary]
(
[TableID]
INT IDENTITY( 1 , 1 ) NOT NULL
,
[IpAddress]NVARCHAR(
15 ) NOT NULL
,
[DataBaseName] NVARCHAR(
35 ) NOT NULL
,
[TableName]NVARCHAR(
35 ) NOT NULL
,
[Description]NVARCHAR(
150 ) NULL
,
CONSTRAINT [PK_TableDataDictionary] PRIMARY KEY([Tableid])
);
ELSE

PRINT
' This table have been exist in database';
GO

  上面兩段腳本比起來,你是否覺得下面的更美觀、優雅呢?

  接下來我們來看看四段申明變量的腳本,自己可以對比

#div_code img{border:0px;}
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> (一)
DECLARE @PayType VARCHAR(
50
),@Rate FLOAT, @FeeRate FLOAT ,@OtheFee FLOAT;
DECLARE @StartDate DATETIME, @EndDate DATETIME;
DECLARE @CmdSql NVARCHAR(MAX);
DECLARE @MyCardBillFee FLOAT, @MyCardFeeFLOAT;
#div_code img{border:0px;}
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->
(二)
DECLARE @PayType VARCHAR(
50 );
DECLARE @Rate FLOAT;
DECLARE @FeeRate FLOAT;
DECLARE @OtheFee FLOAT;
DECLARE @StartDate DATETIME;
DECLARE @EndDate DATETIME;
DECLARE @CmdSql NVARCHAR(MAX);
DECLARE @MyCardBillFee FLOAT;
DECLARE @MyCardFeeFLOAT;
#div_code img{border:0px;}
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->
(三)

DECLARE @PayType VARCHAR(
50 ); --
支付類型
DECLARE @RateFLOAT;
--
匯率比例
DECLARE @FeeRate FLOAT;
--
手續費比例
DECLARE @MyCardFee FLOAT;
--
......
DECLARE @OtheFee FLOAT;
--
......
DECLARE @MyCardBillFee FLOAT;
--
......
DECLARE @StartDate DATETIME;
--
......
DECLARE @EndDate DATETIME;
--
......
DECLARE @CmdSqlNVARCHAR(MAX);
--
......
#div_code img{border:0px;}
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> (四)
DECLARE
@PayType
AS VARCHAR( 50 ); --
支付類型
@Rate
AS FLOAT; --
匯率比例
@FeeRate
AS FLOAT; --
手續費比例
@MyCardFee
AS FLOAT; --
......
@OtheFee
AS FLOAT; --
......
@MyCardBillFee
AS FLOAT; --
......
@StartDate
AS DATETIME; --
......
@EndDate
AS DATETIME; --
......
@CmdSql
AS NVARCHAR(MAX); --
......

  如果是你,你愿意運用哪種書寫格式呢? 個人覺得(一)寫得極極糟糕,不僅閱讀不方便、而且也不方便注視。(二)則是我以前習慣書寫的格式,一來沒有注視、二來看起來沒有(三)、(四)美觀、大方。

  存儲過程、函數頭部注視的樣式(個人曾今用過的樣式):

#div_code img{border:0px;}
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> (一)

--=============================================================================================================

-- Function :dbo.USP_GetEmployeById 按Id獲取雇員信息
--
Auhtor:Kerry
-- Create Date : 2010 - 08 - 12

-- Description :詳細描述存儲過程功能(對Function 功能補充)、以及參數、輸出結果的描述
--=============================================================================================================

-- 2010 - 08 - 12 : 修改....增加........
-- 2010 - 08 - 13
:修改....增加.......

  Function 簡要描述存儲過程、函數功能。

  Desctiption 詳細描述存儲過程、函數功能,以及參數、輸出結果描述

#div_code img{border:0px;}
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> (二)

-- Create Date : 2010 - 08 - 11

-- Author :Kerry
-- Modified Date : 2010 - 08 - 12

-- Modified Content :修改表字段、增加匯率計算.....
-- Modified Date : 2010 - 08 - 13

-- Modified Content :修改表字段、增加匯率計算.....
-- Description:計算搶車位社區游戲的月充值結構信息。
#div_code img{border:0px;}
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> (三)

Auhtor :Kerry
Create
Date : 2010 - 08 - 12

Modified
Date :
Modified Content :
Description:如何書寫漂亮、優雅的SQL腳本
#div_code img{border:0px;}
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> ( 四)
-- Author: < Author,,Name >

-- Create date : < Create Date ,, >
-- Description: < Description,, >

  使用MSSMS新建存儲過程,它自動生成的樣式

  個人覺得(一) >= (二) > (三) > (四) ,不知道大家有沒有更好的格式推薦。  


  下面看看這樣一段腳本,一眼就覺得有點糟糕,其實實際開發中腳本比這個可能復雜得多,頭痛吧

#div_code img{border:0px;}
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> select PermissionID fromPermission where resourceid =
(
select top 1 resourceid from [Resource] where resourcename = @resourcename) and
actionid
= ( select top 1 actionid from [Action] where actionname =
@actionname)
AND SchemaId in ( SELECT SchemaId FROM dbo.BindToSchema WHERE DcUserID = @UserID)

  首先就應該統一關鍵字大小寫,不要一部分大寫、一部分小寫。然后從結構上面調整。 可能每個人的審美觀、習慣的格式不同,這個無所謂,也沒有必要統一。 但是你書寫出來的腳本至少要結構清晰,一目了然。不要讓別人費很大的勁去調整格式,然后才能理解它的邏輯,如果寫出上面或是比上面更糟糕的腳本,我想項目經理真應該教訓教訓你。這樣只會給后來維護的人痛苦不堪(實際開發中可能比這糟糕十倍呢,想必很多人是深受其害啊)

#div_code img{border:0px;}
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> SELECT Permission FROMPermission
WHERE
resourceid
= ( SELECT TOP 1 resourceid FROM [Resource] WHERE resourcename =
@resourcename)
AND actionid = ( SELECT TOP 1 actionid FROM [Action] WHERE actionname =
@actionname)
AND SchemaId IN ( SELECT SchemaId FROM dbo.DcUserBindToSchema WHERE DcUserID = @UserID)

  動態組合語句是否讓你的腳本看起來林亂不堪啊,你有沒有試過讓其在某些方面看起來美觀點、優雅點啊、

#div_code img{border:0px;}
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> ' SELECT Order_ID = @OrderID, CampaignCode= @CampaignCode, ProductCode = @ProductCode, StartDate= SpotDate,
EndDate = EndDate, StartTime = Media_StartTime, EndTime = Media_EndTime, Duration = ( CASE WHEN Media_Duration IS NULL OR ELSE Media_Duration END ), Adformat = Media_Adformat , Color = Media_Color , -- Media_Showing,Size = Media_Size, SpotType = Media_SpotType, URL = Media_URL, ScheduleNo = ScheduleNo ,
Plan_Insertion_ID
= Plan_Insertion_ID

  那下面書寫格式是不是美觀、整潔些呢

#div_code img{border:0px;}
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> SELECT
Order_ID
=
@OrderID
, CampaignCode
=
@CampaignCode
, ProductCode
=
@ProductCode
, StartDate
=
SpotDate
, EndDate
=
EndDate
, StartTime
=
Media_StartTime
, EndTime
=
Media_EndTime
, Adformat
=
Media_Adformat
, Color
=
Media_Color
, Impression
=
Media_Impression
, Location
=
Media_Location
, Material
=
Media_Material
, Position
=
Media_Position
, Program
=
Media_Program
, Scale
= Media_Scale --
Media_Showing
, Size
=
Media_Size
, SpotType
=
Media_SpotType
, URL
=
Media_URL
, ScheduleNo
=
ScheduleNo
, Plan_Insertion_ID
=
Plan_Insertion_ID
, Position
= Media_Position

  怎么樣是否覺得下面的”清新脫俗“,眼前一亮啊,呵呵,不是在說美女啊。看看我以前一個同事寫的吧,我只截取了一部分。

1

  寫著覺得有點天馬行空、不著邊際了,其實這個話題有點大,而且和個人習慣、審美觀有莫大聯系,所謂眾口難調,不過有幾點應該是一致的:

  1:書寫腳本的時候,多用空格、Tab鍵,不要讓代碼擁擠,雜糅在一起。

  2:讓代碼看起來覺得舒服,一目了然,不要一看就覺得頭痛,要細細看上好久,才了解邏輯結構

  3:讓代碼看起來整潔、優美。凌亂不堪是大忌。

  4:總結、學習一些書寫漂亮的格式。

  限于篇幅,下面給出一些我見過的、寫的比較優雅的腳本,大家也可以貼出自己寫得優美的代碼,一起學習探討。

#div_code img{border:0px;}
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> -- Construct column list
SET @sql =

N
' SET @result = '+ @newline +
N ' STUFF('+ @newline +
N ' (SELECT N'','' + '
+ N ' QUOTENAME(pivot_col) AS [text()]' + @newline +
N ' FROM (SELECT DISTINCT('
+ @on_cols + N ' ) AS pivot_col'+ @newline +
N ' FROM' + @query + N') AS DistinctCols' + @newline +
N ' ORDER BY pivot_col' + @newline +
N ' FOR XML PATH('''')),' + @newline +
N ' 1, 1, N'''');'

EXEC sp_executesql
@stmt
= @sql,
@params
= N ' @result AS NVARCHAR(MAX) OUTPUT',

@result = @cols OUTPUT;

--
Create the PIVOT query
SET @sql =

N
' SELECT *' + @newline +
N ' FROM' + @newline +
N ' ( SELECT '+ @newline +
N ' ' + @on_rows + N',' + @newline +
N ' ' + @on_cols + N' AS pivot_col,'+ @newline +
N ' ' + @agg_col + N' AS agg_col' + @newline +
N ' FROM '+ @newline +
N ' ' + @query+ @newline +
N ' ) AS PivotInput'+ @newline +
N ' PIVOT'+ @newline +
N ' ( ' + @agg_func + N'(agg_col)'+ @newline +
N ' FOR pivot_col'+ @newline +
N ' IN(' + @cols + N')' + @newline +
N ' ) AS PivotOutput;'




#div_code img{border:0px;}
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> DECLARE
@schemaname
AS NVARCHAR( 128
),
@tablename
AS NVARCHAR( 128
),
@colname
AS NVARCHAR( 128
),
@sql
AS NVARCHAR( 805
);

SET @schemaname = N ' dbo';

SET @tablename = N ' Orders';
SET @colname = N ' CustomerID';
SET @sql = N ' SELECT COUNT(DISTINCT '
+ QUOTENAME(@colname) + N ' ) FROM '
+ QUOTENAME(@schemaname)
+ N ' .'

+ QUOTENAME(@tablename)
+ N ' ;';


EXEC(@sql);

賞心悅目!SQL Server漂亮腳本書寫格式


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日本wwxx | 狠狠色丁香婷婷久久 | 日韩精品一区二区三区在线观看 | 欧美a级v片不卡在线观看 | 国产精品啪一品二区三区粉嫩 | 明明电影高清在线观看 | 99精品视频免费观看 | 美日韩一区二区 | 午夜天堂精品久久久久 | 奇米中文字幕 | 91网站国产 | 欧美日韩视频在线第一区 | 深夜寂寞影院 | 免费观看一区二区 | 一区二区三区高清在线观看 | 91短视频在线高清hd | 激情久久av一区av二区av三区 | 91制服| 97成人网在线碰碰碰 | 欧美一二三区 | 日本污污视频在线观看 | 夜夜操天天射 | 午夜免费观看福利片一区二区三区 | 白颖宇 | 精品一区二区三区在线观看l | 国产成人免费 | 欧美成人精品一区二区三区 | 国产真实精品久久二三区 | 久久就是精品 | 国产精品福利短视在线播放频 | 亚洲欧美爱爱 | 亚洲综合在线网 | 日韩精品一区二区免费视频 | 两性视频久久 | 亚洲精品专区 | 欧美aaaaaaaa| 夜夜爽夜夜叫夜夜高潮漏水 | 97色伦图片97综合影院 | 一级黄色毛片子 | www.日韩 | 日本黄色大片免费 |