存儲過程和游標
1 -- 變量的聲明,sql里面聲明變量時必須在變量前加@符號 2 DECLARE @I INT 3 4 -- 變量的賦值,變量賦值時變量前必須加set 5 SET @I = 30 6 7 -- 聲明多個變量 8 DECLARE @s varchar(10),@a INT 9 10 -- Sql 里if語句 11 IF 條件 BEGIN 12 執行語句 13 END 14 ELSE BEGIN 15 執行語句 16 END 17 18 DECLARE @d INT 19 set @d = 1 20 21 IF @d = 1 BEGIN 22 23 -- 打印 24 PRINT '正確' 25 END 26 ELSE BEGIN 27 PRINT '錯誤' 28 END 29 30 31 -- Sql 里的多條件選擇語句. 32 DECLARE @iRet INT, @PKDisp VARCHAR(20) 33 SET @iRet = 1 34 Select @iRet = 35 CASE 36 WHEN @PKDisp = '一' THEN 1 37 WHEN @PKDisp = '二' THEN 2 38 WHEN @PKDisp = '三' THEN 3 39 WHEN @PKDisp = '四' THEN 4 40 WHEN @PKDisp = '五' THEN 5 41 ELSE 100 42 END 43 44 -- 循環語句 45 WHILE 條件 BEGIN 46 執行語句 47 END 48 49 DECLARE @i INT 50 SET @i = 1 51 WHILE @i<1000000 BEGIN 52 set @i=@i+1 53 END 54 -- 打印 55 PRINT @i 56 57 -- Select INTO 從一個查詢的計算結果中創建一個新表。 數據並不返回給客戶端,這一點和普通的 58 -- Select 不同。 新表的字段具有和 Select 的輸出字段相關聯(相同)的名字和數據類型。 59 60 select * into NewTable 61 from Uname 62 63 64 -- Insert INTO Select 65 -- 表ABC必須存在 66 -- 把表Uname里面的字段Username復制到表ABC 67 Insert INTO ABC Select Username FROM Uname 68 69 -- 創建臨時表 70 Create TABLE #temp( 71 UID int identity(1, 1) PRIMARY KEY, 72 UserName varchar(16), 73 Pwd varchar(50), 74 Age smallint, 75 Sex varchar(6) 76 ) 77 -- 打開臨時表 78 Select * from #temp 79 80 81 -- 存儲過程 82 -- 要創建存儲過程的數據庫 83 Use Test 84 -- 判斷要創建的存儲過程名是否存在 85 if Exists(Select name From sysobjects Where name='csp_AddInfo' And 86 87 type='P') 88 -- 刪除存儲過程 89 Drop Procedure dbo.csp_AddInfo 90 Go 91 92 93 -- 創建存儲過程 94 Create Proc dbo.csp_AddInfo 95 -- 存儲過程參數 96 @UserName varchar(16), 97 @Pwd varchar(50), 98 @Age smallint, 99 @Sex varchar(6) 100 AS 101 -- 存儲過程語句體 102 insert into Uname (UserName,Pwd,Age,Sex) 103 values (@UserName,@Pwd,@Age,@Sex) 104 RETURN 105 -- 執行 106 GO 107 108 -- 執行存儲過程 109 EXEC csp_AddInfo 'Junn.A','123456',20,'男' 110 111 有關游標的問題 112 113 declare db cursor for //聲明一個游標(db為其名稱) 114 115 SELECT UNIT_NAME FROM UNIT WHERE LEFT(UNIT_CODE,2)=LEFT(@strTO,2)//記錄集 116 117 open db //打開游標 118 119 fetch next from db into @strUNIT_NAME //將第一個值放入一個參數中 120 121 while @@fetch_status = 0 ---存在本筆值向下循環 122 123 (0:順利執行;-1:失敗,或資料列超出結果集;-2:擷取的資料列已遺漏) 124 125 BEGIN ----開始循環 126 127 //個體操作 128 129 End ----結束循環 130 131 Close db ---關閉游標 132 133 deallocate db //移除資料指標參考