sql 简单游标
在存储过程或触发器中使用 Transact-SQL 游标的典型过程为:
声明 Transact-SQL 变量包含游标返回的数据。为每个结果集列声明一个变量。声明足够大的变量来保存列返回的值,并声明变量的类型为可从列数据类型隐式转换得到的数据类型。
使用 DECLARE CURSOR 语句将 Transact-SQL 游标与 SELECT 语句相关联。另外,DECLARE CURSOR 语句还定义游标的特性,例如游标名称以及游标是只读还是只进。
使用 OPEN 语句执行 SELECT 语句并填充游标。
使用 FETCH INTO 语句提取单个行,并将每列中的数据移至指定的变量中。然后,其他 Transact-SQL 语句可以引用那些变量来访问提取的数据值。Transact-SQL 游标不支持提取行块。
使用 CLOSE 语句结束游标的使用。关闭游标可以释放某些资源,例如游标结果集及其对当前行的锁定,但如果重新发出一个 OPEN 语句,则该游标结构仍可用于处理。由于游标仍然存在,此时还不能重新使用该游标的名称。DEALLOCATE 语句则完全释放分配给游标的资源,包括游标名称。释放游标后,必须使用 DECLARE 语句来重新生成游标。
摘自:ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHS/udb9/html/a5f0904e-0171-44fa-b516-14c6dc91ccd0.htm
declare @value1 varchar(20);
declare @value2 varchar(20);
declare cursor_demo cursor for
select t1.id,t2.id from t1 left join t2 on t1.id=t2.id
open cursor_demo
FETCH NEXT from cursor_demo INTO @value1, @value2
WHILE @@FETCH_STATUS = 0
BEGIN
if(@value1=@value2)
begin
update t1 set [name]='goodtobad' where id=@value1
end
FETCH NEXT from cursor_demo INTO @value1, @value2
END
CLOSE cursor_demo
DEALLOCATE cursor_demo
GO
相关文档:
create PROCEDURE pagelist
@tablename nvarchar(50),
@fieldname nvarchar(50)='*',
@pagesize int output,--每页显示记录条数
@currentpage int output,--第几页
@orderid nvarchar(50),--主键排序
@sort int,--排序方式,1表示升序,0表示降序排列
......
Private Sub CommandButton1_Click()
Worksheets("Sheet2").Select
Cells.Select
Selection.Delete Shift:=xlUp
Range("A1").Select
'清除在Excel中的数据,确保导入信息不出现与原Excel数据进行叠加
Dim cnnConnect As Object
Dim rstR ......
--监控索引是否使用 alter index &index_name monitoring usage; alter index &index_name nomonitoring usage; select * from v$object_usage where index_name = &index_name;
--求数据文件的I/O分布 select df.name,phyrds,phywrts,phyblkrd,phyblkwrt,singleblkrds,readtim,writetim from v$filestat fs,v ......
感觉自己是比较笨的,学习过SQL语言,但是却分不太清楚DDL、DML、DCL语言,所以呢,今天就厚着脸皮问了老师,现在就自己目前的了解来总结一下。
1、DDL(DATA DEFINITION LANGUAGE)数据描述语言
DDL语句不会产生还原数据,所以删除的数据也是无法恢复的
CREATE - to ......
CREATE FUNCTION dbo.UF_GetInvoiceSerials( @bizCode VARCHAR(10))
RETURNS VARCHAR(100)
AS
BEGIN
DECLARE @ret AS VARCHAR(1000)
SELECT @ret=Coalesce(@ret + ', ','') +
CASE e.ID
  ......