欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
SQL IF..ELSE..在存儲過(guò)程的使用規范

(
@city nvarchar(20),
@town nvarchar(20),
@village nvarchar(20)
)
as
declare @num numeric(10)
declare @yd_num numeric(10)
declare @lt_num numeric(10)
declare @gh_num numeric(10)
declare @xlt_num numeric(10)
select @num=count(jmzh) from jfxd.t_gongan_end_2
if @city='aaa'
begin
select @yd_num=count(jmzh) from jfxd.t_gongan_end_2 where SERIAL_NUMBER is not null
select @lt_num=count(jmzh) from jfxd.t_gongan_end_2 where unicom is not null
select @gh_num=count(jmzh) from jfxd.t_gongan_end_2 where tel is not null
select @xlt_num=count(jmzh) from jfxd.t_gongan_end_2 where little_tel is not null
end
else if @town='bbb'
begin
//sql語(yǔ)句
end
else
begin
//sql語(yǔ)句
end
update t_stat_info set……
GO 
存儲過(guò)程人門(mén)
課程目標:

一、TRUNCATE

二、Select INTO 建表
    把一個(gè)表中的數據復制到另外一個(gè)表中。

三、Insert INTO Select

四、補充:臨時(shí)表
    臨時(shí)表存儲在系統數據庫tempdb中
    臨時(shí)表會(huì )被系統隱式地丟棄

---------------------------------------------------------

五、存儲過(guò)程(**)

    一、簡(jiǎn)介:
    
   存儲過(guò)程(Stored Procedure), 是一組為了完成特定功能的SQL 語(yǔ)句,集經(jīng)編譯后
    存儲在數據庫中,用戶(hù)通過(guò)指定存儲過(guò)程的名字并給出參數,如果該存儲過(guò)程帶有參數來(lái)執行

它,
    在SQL Server 的系列版本中,存儲過(guò)程分為兩類(lèi):系統提供的存儲過(guò)程和用戶(hù)自定義存儲過(guò)程

。
    系統SP,主要存儲master 數據庫中,并以sp_為前綴并且系統存儲過(guò)程主要是從系統表中獲取
    信息,從而為系統管理員管理SQL Server。 用戶(hù)自定義存儲過(guò)程是由用戶(hù)創(chuàng )建,并能完成
    某一特定功能,如:查詢(xún)用戶(hù)所需數據信息的存儲過(guò)程。
    
      存儲過(guò)程具有以下優(yōu)點(diǎn)
    1.存儲過(guò)程允許標準組件式編程(模塊化設計)
    存儲過(guò)程在被創(chuàng )建以后,可以在程序中被多次調用,而不必重新編寫(xiě)該存儲過(guò)程的SQL語(yǔ)句,而

且數
    據庫專(zhuān)業(yè)人員可隨時(shí)對存儲過(guò)程進(jìn)行修改,但對應用程序源代碼毫無(wú)影響。因為應用程序源代

碼只包含存
    儲過(guò)程的調用語(yǔ)句,從而極大地提高了程序的可移植性。
            
    2.存儲過(guò)程能夠實(shí)現快速的執行速度
   如果某一操作包含大量的Transaction-SQL 代碼,,或分別被多次執行,那么存儲過(guò)程要比批處理


    執行速度快很多,因為存儲過(guò)程是預編譯的,在首次運行一個(gè)存儲過(guò)程時(shí),查詢(xún)優(yōu)化器對其進(jìn)

行分析優(yōu)
    化,并給出最終被存在系統表中的執行計劃,而批處理的Transaction-SQL 語(yǔ)句在每次運行時(shí)

都要進(jìn)行
    編譯和優(yōu)化,因此速度相對要慢一些。
                
    3.存儲過(guò)程能夠減少網(wǎng)絡(luò )流量
   對于同一個(gè)針對數據數據庫對象的操作,如查詢(xún)修改,如果這一操作所涉及到的Transaction-SQL
    語(yǔ)句被組織成一存儲過(guò)程,那么當在客戶(hù)計算機上調用該存儲過(guò)程時(shí),網(wǎng)絡(luò )中傳送的只是該調

用語(yǔ)句,否
    則將是多條SQL 語(yǔ)句從而大大增加了網(wǎng)絡(luò )流量降低網(wǎng)絡(luò )負載。
            
    4.存儲過(guò)程可被作為一種安全機制來(lái)充分利用
   系統管理員通過(guò),對執行某一存儲過(guò)程的權限進(jìn)行限制,從而能夠實(shí)現對相應的數據訪(fǎng)問(wèn)權限的


    制。


    二、變量

    @I

    三、流程控制語(yǔ)句(if else | select case | while )
    Select ... CASE 實(shí)例
    DECLARE @iRet INT, @PKDisp VARCHAR(20)
    SET @iRet = '1'
    Select @iRet =
    CASE
        WHEN @PKDisp = '一' THEN 1
        WHEN @PKDisp = '二' THEN 2
        WHEN @PKDisp = '三' THEN 3
        WHEN @PKDisp = '四' THEN 4
        WHEN @PKDisp = '五' THEN 5
        ELSE 100
    END

    四、存儲過(guò)程格式
        
    創(chuàng )建存儲過(guò)程
    Create Proc dbo.存儲過(guò)程名
    存儲過(guò)程參數
    AS
    執行語(yǔ)句
    RETURN
    執行存儲過(guò)程
    GO
*********************************************************/


-- 變量的聲明,sql里面聲明變量時(shí)必須在變量前加@符號
    DECLARE @I INT

-- 變量的賦值,變量賦值時(shí)變量前必須加set
    SET @I = 30

-- 聲明多個(gè)變量
    DECLARE @s varchar(10),@a INT

-- Sql 里if語(yǔ)句
    IF 條件 BEGIN
        執行語(yǔ)句
    END
    ELSE BEGIN
        執行語(yǔ)句
    END
            
    DECLARE @d INT
    set @d = 1

    IF @d = 1 BEGIN

    -- 打印
        PRINT '正確'
    END
    ELSE BEGIN
        PRINT '錯誤'
    END


-- Sql 里的多條件選擇語(yǔ)句.
    DECLARE @iRet INT, @PKDisp VARCHAR(20)
    SET @iRet = 1
    Select @iRet =
    CASE
        WHEN @PKDisp = '一' THEN 1
        WHEN @PKDisp = '二' THEN 2
        WHEN @PKDisp = '三' THEN 3
        WHEN @PKDisp = '四' THEN 4
        WHEN @PKDisp = '五' THEN 5
        ELSE 100
    END

-- 循環(huán)語(yǔ)句
    WHILE 條件 BEGIN    
        執行語(yǔ)句
    END

    DECLARE @i INT
    SET @i = 1
    WHILE @i<1000000 BEGIN
        set @i=@i+1
    END
    -- 打印
    PRINT @i


-- TRUNCATE 刪除表中的所有行,而不記錄單個(gè)行刪除操作,不能帶條件

    
        
        TRUNCATE TABLE authors
                

-- Select INTO 從一個(gè)查詢(xún)的計算結果中創(chuàng )建一個(gè)新表。 數據并不返回給客戶(hù)端,這一點(diǎn)和普通的
-- Select 不同。 新表的字段具有和 Select 的輸出字段相關(guān)聯(lián)(相同)的名字和數據類(lèi)型。
        
        select * into NewTable
            from Uname


-- Insert INTO Select
        -- 表ABC必須存在
        -- 把表Uname里面的字段Username復制到表ABC
        Insert INTO ABC Select Username FROM Uname

-- 創(chuàng )建臨時(shí)表
        Create TABLE #temp(
            UID int identity(1, 1) PRIMARY KEY,
            UserName varchar(16),
            Pwd varchar(50),
            Age smallint,
            Sex varchar(6)
        )
        -- 打開(kāi)臨時(shí)表
        Select * from #temp

-- 存儲過(guò)程
        -- 要創(chuàng )建存儲過(guò)程的數據庫
        Use Test
        -- 判斷要創(chuàng )建的存儲過(guò)程名是否存在
            if Exists(Select name From sysobjects Where And

type='P')
            -- 刪除存儲過(guò)程
            Drop Procedure dbo.csp_AddInfo
        Go
                
                
        -- 創(chuàng )建存儲過(guò)程
        Create Proc dbo.csp_AddInfo
        -- 存儲過(guò)程參數
        @UserName varchar(16),
        @Pwd varchar(50),
        @Age smallint,
        @Sex varchar(6)
        AS
        -- 存儲過(guò)程語(yǔ)句體
        insert into Uname (UserName,Pwd,Age,Sex)
            values (@UserName,@Pwd,@Age,@Sex)
        RETURN
        -- 執行
        GO
                
        -- 執行存儲過(guò)程
        EXEC csp_AddInfo 'Junn.A','123456',20,'男'
 

sql server中翻頁(yè)存儲過(guò)程:
Create           PROC blog_GetPagedPosts
(
 @PageIndex int,
 @PageSize int,
 @BlogID   int=0,
 @PostType int=-1,
  @CategoryID int=-1,
  @Hiding     bit =0,
  @Count    int output
       
)
as
DECLARE @PageLowerBound int
DECLARE @PageUpperBound int
SET @PageLowerBound = @PageSize * @PageIndex - @PageSize
SET @PageUpperBound = @PageLowerBound + @PageSize + 1

Create Table #IDs
(
 TempID int IDENTITY (1, 1) NOT NULL,
 EntryID int not null
)
Insert  into #IDs(EntryID)  select DISTINCT [ID] from view_Content  where CategoryID=@CategoryID and blogID=@BlogID   order by [ID] desc
SELECT  vc.*
FROM   View_Content vc
     INNER JOIN #IDS tmp ON (vc .[ID] = tmp.EntryID)
WHERE  tmp.TempID > @PageLowerBound
 AND tmp.TempID < @PageUpperBound and vc.Hiding=0
ORDER BY tmp.TempID
SELECT @Count=COUNT(*) FROM  #IDS
SELECT @Count=COUNT(*) FROM  #IDS
DROP TABLE #IDS
return @Count
GO

 

在A(yíng)ccess中由于不支持存儲過(guò)程,不能建立臨時(shí)表只能在程序中實(shí)現
Access中實(shí)現如下,這也是我在myblog Access版中使用的:
public List<DayBook> GetPagedPost(PagedPost p, out int TotalRecords)
        {
            List<DayBook> list = new List<DayBook>();

            using (OleDbConnection conn = GetOleDbConnection())
            {
                StringBuilder sql = new StringBuilder();
                sql.AppendFormat("select  [ID] from blog_Content as p ");//構造查詢(xún)條件
                if (p.CategoryID > 0)
                {
                    sql.AppendFormat(",blog_Categories AS c, blog_Links AS l WHERE c.CategoryID=l.CategoryID and (p.ID=l.PostID ) and c.CategoryID={1} and p.BlogID={0}  ",p.BlogID, p.CategoryID);
                }
                else
                {
                    sql.AppendFormat(" where p.blogID={0} ", p.BlogID);
                }
                if (p.PostType != PostType.Undeclared)
                {
                    sql.AppendFormat(" and p.PostType={0} ", (int)p.PostType);
                }
                sql.Append(" order by p.[DateUpdated] desc");
               // NetDiskContext.Current.Context.Response.Write(sql.ToString());
                //NetDiskContext.Current.Context.Response.End();
                OleDbCommand MyComm = new OleDbCommand(sql.ToString(), conn);
                List<int> IDs = new List<int>(); //獲取主題ID列表
                conn.Open();
                using (OleDbDataReader dr = MyComm.ExecuteReader())
                {
                    while (dr.Read())
                    {
                        IDs.Add((int)dr[0]);
                   
                    }
                }
              
                TotalRecords=IDs.Count;//返回記錄總數
                if (TotalRecords < 1)
                    return list;
                int pageLowerBound = p.PageSize * p.PageIndex - p.PageSize;//記錄索引
                int pageUpperBound = pageLowerBound + p.PageSize ;
                StringBuilder sb = new StringBuilder();
                if (TotalRecords >= pageLowerBound)
                    for (int i = pageLowerBound; i < TotalRecords && i < pageUpperBound; i++)
                    {
                        sb.AppendFormat("{0},", IDs[i]);//構造ID in() 條件,取其中一頁(yè)
                    }
                else return list; //如沒(méi)有記錄返回空表
                if(sb.Length>1)
                sb.Remove(sb.Length - 1, 1);//刪除最后一個(gè)逗號
            MyComm.CommandText = string.Format("SELECT b.* , c.Account as Account FROM blog_Content b, Blog_Config  c where b.BlogID=c.BlogID and b.[ID] in ({0}) order by b.dateadded desc", sb.ToString());
                using (OleDbDataReader dr = MyComm.ExecuteReader())
                {
                    while (dr.Read())
                    {
                        list.Add(DataHelp.LoadDayBook(dr));
                    }
                }
                return list;
            }
         }

存儲過(guò)程
 定義總是很抽象。存儲過(guò)程其實(shí)就是能完成一定操作的一組SQL語(yǔ)句,只不過(guò)這組語(yǔ)句是放在數據庫中的(這里我們只談SQL Server)。如果我們通過(guò)創(chuàng )建存儲過(guò)程以及在A(yíng)SP中調用存儲過(guò)程,就可以避免將SQL語(yǔ)句同ASP代碼混雜在一起。這樣做的好處至少有三個(gè):
  
    第一、大大提高效率。存儲過(guò)程本身的執行速度非???,而且,調用存儲過(guò)程可以大大減少同數據庫的交互次數。
  
    第二、提高安全性。假如將SQL語(yǔ)句混合在A(yíng)SP代碼中,一旦代碼失密,同時(shí)也就意味著(zhù)庫結構失密。
  
    第三、有利于SQL語(yǔ)句的重用。
  
    在A(yíng)SP中,一般通過(guò)command對象調用存儲過(guò)程,根據不同情況,本文也介紹其它調用方法。為了方便說(shuō)明,根據存儲過(guò)程的輸入輸出,作以下簡(jiǎn)單分類(lèi):
  
    1. 只返回單一記錄集的存儲過(guò)程
  
    假設有以下存儲過(guò)程(本文的目的不在于講述T-SQL語(yǔ)法,所以存儲過(guò)程只給出代碼,不作說(shuō)明):
  
  
  CREATE PROCEDURE dbo.delUserAll
  as
  set nocount on
  begin
  delete from dbo.[userinfo]
  end
  go
  
    該存儲過(guò)程刪去userinfo表中的所有記錄,沒(méi)有任何輸入及輸出,調用方法與上面講過(guò)的基本相同,只是不用取得記錄集:
  
  '**通過(guò)Command對象調用存儲過(guò)程**
  DIM MyComm
  Set MyComm = Server.CreateObject("ADODB.Command")
  MyComm.ActiveConnection = MyConStr 'MyConStr是數據庫連接字串
  MyComm.CommandText = "delUserAll" '指定存儲過(guò)程名
  MyComm.CommandType = 4 '表明這是一個(gè)存儲過(guò)程
  MyComm.Prepared = true '要求將SQL命令先行編譯
  MyComm.Execute '此處不必再取得記錄集
  Set MyComm = Nothing
  
    當然也可通過(guò)Connection對象或Recordset對象調用此類(lèi)存儲過(guò)程,不過(guò)建立Recordset對象是為了取得記錄集,在沒(méi)有返回記錄集的情況下,還是利用Command對象吧。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
存儲過(guò)程格式
ADO SQL數據庫 筆記匯總
Sql語(yǔ)句字符串中不能帶方法
MySQL函數&存儲過(guò)程
MySQL:MySQL 創(chuàng )建存儲過(guò)程(MySQL 5.0)--索倫之都
MySQL 存儲過(guò)程的基本用法
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久