国产午夜精品一区二区三区不-国产午夜精品一区二区三区不卡-国产午夜精品一区二区三区极品-国产午夜精品一区二区三区老-国产午夜精品一区二区三区漫-国产午夜精品一区二区三区嫩草

聊城網站制作公司,聊城網站建設,聊城網站優化,聊城網絡公司,聊城網站推廣,聊城網站運營,聊城網絡運營,聊城搜索引擎優化,聊城網頁設計,聊城網站制作
 
 
公司擁有五年的網站建設經驗,專業網站制作,推廣及網站優化,有大量優秀客戶案例
網站建設 | 設為首頁 | 加入收藏 | 聯系我們  
公告:熱烈慶祝聊城精英網絡2010版官方網站改版成功!
當前位置 :首頁 > 網頁知識  

SQL SERVER編寫存儲過程小工具

http://m.zjgjyh.cn   2010-12-23   人氣:

在開發數據庫系統的過程中,經常要寫很多的存儲過程。為了統一格式和簡化開發過程,我編寫一些存儲過程,用來自動生成存儲過程。下面就為您簡單介紹一下它們。其中一個用于生成Insert過程,另一個用于生成Update過程。

Sp_GenInsert
該過程運行后,它為給定的表生成一個完整的Insert過程。如果原來的表有標識列,您得將生成的過程中的SET IDNTITY_INSERT ON 語句手工刪除。
語法如下
sp_GenInsert < Table Name >,< Stored Procedure Name >
以northwind 數據庫為例
sp_GenInsert 'Employees', 'INS_Employees'
最后會生成一個Insert存儲過程。利用它,您可以作進一步的開發。

Sp_GenUpdate
它會為一個表生成update存儲過程。語法如下:
sp_GenUpdate < Table Name >,< Primary Key >,< Stored Procedure Name >
以northwind 數據庫為例
sp_GenUpdate 'Employees','EmployeeID','UPD_Employees'
運行后生成如下所示的存儲過程:
Create Procedure UPD_Employees
@EmployeeID int
@LastName nvarchar(40) ,
@FirstName nvarchar(20) ,
@Title nvarchar(60) ,
@TitleofCourtesy nvarchar(50) ,
@BirthDate datetime ,
@HireDate datetime ,
@Address nvarchar(120) ,
@City nvarchar(30) ,
@Region nvarchar(30) ,
@PostalCode nvarchar(20) ,
@Country nvarchar(30) ,
@HomePhone nvarchar(48) ,
@Extension nvarchar(8) ,
@Phote image ,
@Notes ntext ,
@ReportsTo int ,
@PhotoPath nvarchar(510)
AS
UPDATE Employees
SET
LastName = @LastName,
FirstName = @FirstName,
Title = @Title,
TitleofCourtesy = @TitleofCourtesy,
BirthDate = @BirthDate,
HireDate = @HireDate,
Address = @Address,
City = @City,
Regin = @Regin,
PostalCode = @PostCode,
Country = @Country,
HomePhone = @HomePhone,
Extension = @Extension,
Photo = @Photo
Notes = @Notes,
ReportsTo = @ReportsTo,
PhotoPath = @PhotoPath
WHERE EmployeeID = @EmployeeID

使用以上的兩個存儲過程,節省了我不少時間。特別是在改變了表結構后,重新構造各個存儲過程的過程中。您可以改寫這兩個程序,來自動生成別的存儲過程。

SQL Server編寫存儲過程小工具
以下是兩個存儲過程的源程序
/*===========================================================

語法: sp_GenInsert <Table Name>,<Stored Procedure Name>
以northwind 數據庫為例
sp_GenInsert 'Employees', 'INS_Employees'

注釋:如果您在Master系統數據庫中創建該過程,那您就可以在您服務器上所有的數據庫中使用該過程。

=============================================================*/

CREATE procedure sp_GenInsert
@TableName varchar(130),
@ProcedureName varchar(130)
as
set nocount on

declare @maxcol int,
@TableID int
--itlearner.com
set @TableID = object_id(@TableName)

select @MaxCol = max(colorder)
from syscolumns
where id = @TableID

select 'Create Procedure ' + rtrim(@ProcedureName) as type,0 as colorder into #TempProc
union
select convert(char(35),'@' + syscolumns.name)
+ rtrim(systypes.name)
+ case when rtrim(systypes.name) in ('binary','char','nchar','nvarchar','varbinary','varchar') then '(' + rtrim(convert(char(4),syscolumns.length)) + ')'
when rtrim(systypes.name) not in ('binary','char','nchar','nvarchar','varbinary','varchar') then ' '
end
+ case when colorder < @maxcol then ','
when colorder = @maxcol then ' '
end
as type,
colorder
from syscolumns
join systypes on syscolumns.xtype = systypes.xtype
where id = @TableID and systypes.name <> 'sysname'
union
select 'AS',@maxcol + 1 as colorder
union
select 'INSERT INTO ' + @TableName,@maxcol + 2 as colorder
union
select '(',@maxcol + 3 as colorder
union
select syscolumns.name
+ case when colorder < @maxcol then ','
when colorder = @maxcol then ' '
end
as type,
colorder + @maxcol + 3 as colorder
from syscolumns
join systypes on syscolumns.xtype = systypes.xtype
where id = @TableID and systypes.name <> 'sysname'
union
select ')',(2 * @maxcol) + 4 as colorder
union
select 'VALUES',(2 * @maxcol) + 5 as colorder
union
select '(',(2 * @maxcol) + 6 as colorder
union
select '@' + syscolumns.name
+ case when colorder < @maxcol then ','
when colorder = @maxcol then ' '
end
as type,
colorder + (2 * @maxcol + 6) as colorder
from syscolumns
join systypes on syscolumns.xtype = systypes.xtype
where id = @TableID and systypes.name <> 'sysname'
union
select ')',(3 * @maxcol) + 7 as colorder
order by colorder


select type from #tempproc order by colorder

drop table #tempproc

SQL Server編寫存儲過程小工具
功能:為給定表創建Update存儲過程
語法: sp_GenUpdate <Table Name>,<Primary Key>,<Stored Procedure Name>
以northwind 數據庫為例
sp_GenUpdate 'Employees','EmployeeID','UPD_Employees'

注釋:如果您在Master系統數據庫中創建該過程,那您就可以在您服務器上所有的數據庫中使用該過程。

===========================================================*/
CREATE procedure sp_GenUpdate
@TableName varchar(130),
@PrimaryKey varchar(130),
@ProcedureName varchar(130)
as
set nocount on

declare @maxcol int,
@TableID int
--itlearner.com
set @TableID = object_id(@TableName)

select @MaxCol = max(colorder)
from syscolumns
where id = @TableID

select 'Create Procedure ' + rtrim(@ProcedureName) as type,0 as colorder into #TempProc
union
select convert(char(35),'@' + syscolumns.name)
+ rtrim(systypes.name)
+ case when rtrim(systypes.name) in ('binary','char','nchar','nvarchar','varbinary','varchar') then '(' + rtrim(convert(char(4),syscolumns.length)) + ')'
when rtrim(systypes.name) not in ('binary','char','nchar','nvarchar','varbinary','varchar') then ' '
end
+ case when colorder < @maxcol then ','
when colorder = @maxcol then ' '
end
as type,
colorder
from syscolumns
join systypes on syscolumns.xtype = systypes.xtype
where id = @TableID and systypes.name <> 'sysname'
union
select 'AS',@maxcol + 1 as colorder
union
select 'UPDATE ' + @TableName,@maxcol + 2 as colorder
union
select 'SET',@maxcol + 3 as colorder
union
select syscolumns.name + ' = @' + syscolumns.name
+ case when colorder < @maxcol then ','
when colorder = @maxcol then ' '
end
as type,
colorder + @maxcol + 3 as colorder
from syscolumns
join systypes on syscolumns.xtype = systypes.xtype
where id = @TableID and syscolumns.name <> @PrimaryKey and systypes.name <> 'sysname'
union
select 'WHERE ' + @PrimaryKey + ' = @' + @PrimaryKey,(2 * @maxcol) + 4 as colorder
order by colorder


select type from #tempproc order by colorder

drop table #tempproc
/*=======源程序結束=========*/

專業設計團隊
滿足您的各種設計要求
實力程序開發團隊
為您定制各種程序模塊
后臺管理高效安全
方便更新上傳網站資料
全球高速訪問
無盲區、定制異地備份
專業客服團隊
解決一切使用難題
贈送大容量空間郵箱
免費優化推廣
   
關于我們 | 工作機會 | 付款方式 | 網站制作 | 網頁制作 | 網頁設計 | 網絡公司 | 聯系我們 | 網站地圖
版權所有:聊城精英網絡科技有限公司 © 2005-2010 All Rights Reserved.
咨詢專線:0635-6950368 技術專線:15192175820 在線QQ:312817927 1485871644
地址:聊城市閘口科技市場 郵編:252000 蘇ICP備10112026號
主站蜘蛛池模板: 久久久久久久综合狠狠综合 | 国产偷国产 | 亚洲A片成人无码久久精品色欲 | 无码av在线播放专区 | 国产 日韩 中文字幕 制服 | 精品国产青草久久久久福利 | 人妻系列无码专区免费视频 | 亚洲精品一区国产 | 日韩人妻精品中文字幕 | 亚洲一区二区三区av无码 | 亚洲精品无码久久久久不卡 | 91久久精品国产91久久性色也 | 精品无码中文字幕在线观看 | 亚洲成av人综合在线观看 | 精品视频在线观看免费 | 国产免费破外女真实出血视频 | 亚洲精品中文字幕午夜 | 一区二区三区四区在线免费观看 | 无码黑人又粗又大又长 | 精品国内在视频线2025 | 亚洲午夜久久久无码精品网红a片视频阅读大全台湾无码a片 | 精品国产一区二区三区2025 | 97精品国产高清自在线看超 | 日韩精品人妻系列一区二区三区 | 美女动作一级毛片 | 国产香蕉视频在线播放 | 久久亚洲精品成人AV无码网址 | 人妻无码AV中文系统久久免费 | 亚洲天堂久久精品成人 | 性xxxx欧美老妇胖老太性多毛 | 国产JK白丝喷白浆一区二区 | 女同桌张开腿让我爽了一夜 | 人妻洗澡被强公日日澡电影 | 日韩欧美一区二区无码免费 | igao国产视频 | 精品国产一级在线观看 | 日产精品卡二卡三卡四卡视 | 尤物在线一区二区三区 | 大香煮伊区一二三四区2025 | 免费观看欧美一区二区 | 麻豆视频免费在线观看 |