存储过程和游标

存储过程和游标

  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         //移除資料指標參考

猜你喜欢

转载自www.cnblogs.com/tasunny/p/11996708.html
今日推荐