麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > SQL Server > 正文

SQL Server 2008 存儲過程示例

2024-08-31 01:02:30
字體:
來源:轉載
供稿:網友
這篇文章主要為大家分享了SQL Server 2008 存儲過程示例代碼,需要的朋友可以參考下
 
 
 --有輸入參數的存儲過程--create proc GetComment(@commentid int)asselect * from Comment where CommentID=@commentid --有輸入與輸出參數的存儲過程--create proc GetCommentCount@newsid int,@count int outputasselect @count=count(*) from Comment where NewsID=@newsid  --返回單個值的函數--create function MyFunction(@newsid int)returns intasbegindeclare @count intselect @count=count(*) from Comment where NewsID=@newsidreturn @countend --調用方法--declare @count intexec @count=MyFunction 2print @count --返回值為表的函數--Create function GetFunctionTable(@newsid int)returns tableasreturn(select * from Comment where NewsID=@newsid) --返回值為表的函數的調用--select * from GetFunctionTable(2)

SQLServer 存儲過程中不拼接SQL字符串實現多條件查詢

--以前拼接的寫法  set @sql=' select * from table where 1=1 '  if (@addDate is not null)   set @sql = @sql+' and addDate = '+ @addDate + ' '  if (@name <>'' and is not null)   set @sql = @sql+ ' and name = ' + @name + ' '  exec(@sql)

下面是 不采用拼接SQL字符串實現多條件查詢的解決方案

  --第一種寫法是 感覺代碼有些冗余  if (@addDate is not null) and (@name <> '')   select * from table where addDate = @addDate and name = @name  else if (@addDate is not null) and (@name ='')   select * from table where addDate = @addDate  else if(@addDate is null) and (@name <> '')   select * from table where and name = @name  else if(@addDate is null) and (@name = '')  select * from table  --第二種寫法是  select * from table where (addDate = @addDate or @addDate is null) and (name = @name or @name = '')  --第三種寫法是  SELECT * FROM table where  addDate = CASE @addDate IS NULL THEN addDate ELSE @addDate END,  name = CASE @name WHEN '' THEN name ELSE @name END

SQLSERVER存儲過程基本語法

一、定義變量

--簡單賦值declare @a intset @a=5print @a --使用select語句賦值declare @user1 nvarchar(50)select @user1= '張三'print @user1declare @user2 nvarchar(50)select @user2 = Name from ST_User where ID=1print @user2 --使用update語句賦值declare @user3 nvarchar(50)update ST_User set @user3 = Name where ID=1print @user3 

二、表、臨時表、表變量

--創建臨時表1create table #DU_User1(   [ID] [ int ]  NOT NULL ,   [Oid] [ int ] NOT NULL ,   [Login] [nvarchar](50) NOT NULL ,   [Rtx] [nvarchar](4) NOT NULL ,   [ Name ] [nvarchar](5) NOT NULL ,   [ Password ] [nvarchar]( max ) NULL ,   [State] [nvarchar](8) NOT NULL);--向臨時表1插入一條記錄insert into #DU_User1 (ID,Oid,[Login],Rtx, Name ,[ Password ],State) values (100,2, 'LS' , '0000' , '臨時' , '321' , '特殊' ); --從ST_User查詢數據,填充至新生成的臨時表select * into #DU_User2 from ST_User where ID<8 --查詢并聯合兩臨時表select * from #DU_User2 where ID<3 union select * from #DU_User1 --刪除兩臨時表drop table #DU_User1drop table #DU_User2 --創建臨時表CREATE TABLE #t(   [ID] [ int ] NOT NULL ,   [Oid] [ int ] NOT NULL ,   [Login] [nvarchar](50) NOT NULL ,   [Rtx] [nvarchar](4) NOT NULL ,   [ Name ] [nvarchar](5) NOT NULL ,   [ Password ] [nvarchar]( max ) NULL ,   [State] [nvarchar](8) NOT NULL ,) --將查詢結果集(多條數據)插入臨時表insert into #t select * from ST_User--不能這樣插入--select * into #t from dbo.ST_User --添加一列,為int型自增長子段alter table #t add [myid] int NOT NULL IDENTITY(1,1)--添加一列,默認填充全球唯一標識alter table #t add [myid1] uniqueidentifier NOT NULL default (newid()) select * from #tdrop table #t--給查詢結果集增加自增長列 --無主鍵時:select IDENTITY( int ,1,1) as ID, Name ,[Login],[ Password ] into #t from ST_Userselect * from #t --有主鍵時:select ( select SUM (1) from ST_User where ID<= a.ID) as myID,* from ST_User a order by myID--定義表變量declare @t table(   id int not null ,   msg nvarchar(50) null)insert into @t values (1, '1' )insert into @t values (2, '2' )select * from @t

三、循環

--while循環計算1到100的和declare @a intdeclare @ sum intset @a=1set @ sum =0while @a<=100begin   set @ sum +=@a   set @a+=1endprint @ sum

四、條件語句

--if,else條件分支if(1+1=2)begin   print '對'endelsebegin   print '錯'end --when then條件分支declare @today intdeclare @week nvarchar(3)set @today=3set @week= case   when @today=1 then '星期一'   when @today=2 then '星期二'   when @today=3 then '星期三'   when @today=4 then '星期四'   when @today=5 then '星期五'   when @today=6 then '星期六'   when @today=7 then '星期日'   else '值錯誤'endprint @week 

五、游標

declare @ID intdeclare @Oid intdeclare @Login varchar (50) --定義一個游標declare user_cur cursor for select ID,Oid,[Login] from ST_User--打開游標open user_curwhile @@fetch_status=0begin--讀取游標   fetch next from user_cur into @ID,@Oid,@Login   print @ID   --print @Loginendclose user_cur--摧毀游標deallocate user_cur

五、游標

declare @ID intdeclare @Oid intdeclare @Login varchar (50) --定義一個游標declare user_cur cursor for select ID,Oid,[Login] from ST_User--打開游標open user_curwhile @@fetch_status=0begin--讀取游標   fetch next from user_cur into @ID,@Oid,@Login   print @ID   --print @Loginendclose user_cur--摧毀游標deallocate user_cur

六、觸發器

  觸發器中的臨時表:
  Inserted
  存放進行insert和update 操作后的數據
  Deleted
  存放進行delete 和update操作前的數據

--創建觸發器Create trigger User_OnUpdate    On ST_User    for Update As    declare @msg nvarchar(50)   --@msg記錄修改情況   select @msg = N '姓名從“' + Deleted. Name + N '”修改為“' + Inserted. Name + '”' from Inserted,Deleted   --插入日志表   insert into [LOG](MSG) values (@msg)   --刪除觸發器drop trigger User_OnUpdate

七、存儲過程

--創建帶output參數的存儲過程CREATE PROCEDURE PR_Sum   @a int ,   @b int ,   @ sum int outputASBEGIN   set @ sum =@a+@bEND --創建Return返回值存儲過程CREATE PROCEDURE PR_Sum2   @a int ,   @b intASBEGIN   Return @a+@bEND   --執行存儲過程獲取output型返回值declare @mysum intexecute PR_Sum 1,2,@mysum outputprint @mysum --執行存儲過程獲取Return型返回值declare @mysum2 intexecute @mysum2= PR_Sum2 1,2print @mysum2

八、自定義函數

  函數的分類:
    1)標量值函數
    2)表值函數
        a:內聯表值函數
        b:多語句表值函數
    3)系統函數

--新建標量值函數create function FUNC_Sum1(   @a int ,   @b int)returns intasbegin   return @a+@bend --新建內聯表值函數create function FUNC_UserTab_1(   @myId int)returns tableasreturn ( select * from ST_User where ID<@myId) --新建多語句表值函數create function FUNC_UserTab_2(   @myId int)returns @t table(   [ID] [ int ] NOT NULL ,   [Oid] [ int ] NOT NULL ,   [Login] [nvarchar](50) NOT NULL ,   [Rtx] [nvarchar](4) NOT NULL ,   [ Name ] [nvarchar](5) NOT NULL ,   [ Password ] [nvarchar]( max ) NULL ,   [State] [nvarchar](8) NOT NULL)asbegin   insert into @t select * from ST_User where ID<@myId   returnend --調用表值函數select * from dbo.FUNC_UserTab_1(15)--調用標量值函數declare @s intset @s=dbo.FUNC_Sum1(100,50)print @s --刪除標量值函數drop function FUNC_Sum1

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 污污的视频在线观看 | 国产精品白嫩白嫩大学美女 | 欧美日韩高清一区 | 国产一区在线视频观看 | 久久精品中文 | 午夜在线成人 | 国产一区二区视频观看 | 热99re久久免费视精品频软件 | 久草在线播放视频 | 中国国语毛片免费观看视频 | 成人免费福利视频 | 黄色av网站免费 | 欧美日韩一区三区 | 久久久久久久久久久久久国产精品 | 欧美性生活久久 | 特级黄色小说 | 国产亚洲精品久久久久5区 男人天堂免费 | 中日韩免费视频 | 国产午夜电影在线观看 | 国产理论视频在线观看 | 中文字幕欧美亚洲 | 欧美在线观看视频网站 | 美女久久久久 | 亚洲最新黄色网址 | 美国av免费看 | 黄色网址在线视频 | 国产精品成人一区二区三区电影毛片 | 亚洲婷婷日日综合婷婷噜噜噜 | 欧美成人福利 | 日本残忍极度灌浣肠视频 | 国产三级三级三级三级 | 久久亚洲精品久久国产一区二区 | 精品国产91久久久久久久妲己 | 久久久久国产成人免费精品免费 | 精品一区二区电影 | 久久最新视频 | 成人在线视频国产 | 女人一级一级毛片 | 亚洲经典视频 | 欧美一级高清免费 | 欧美一级淫片免费视频黄 |